2014-03-25 2 views
1
나는 장고 form.py 파일을 만든

:장고의 형태로 데이터를 삭제하는 방법

from django import forms 
from models import ResumeModel 


class ResumeForm(forms.ModelForm): 
    username = forms.CharField(max_length = 200) 
    first_name = forms.CharField(max_length = 200) 
    last_name = forms.CharField(max_length = 200) 
    fathers_name = forms.CharField(max_length = 200) 
    email = forms.EmailField(required=True, label='Your e-mail address') 
    message = forms.CharField(widget=forms.Textarea) 
    class Meta(): 
     model = ResumeModel 
     fields =('username','first_name','last_name','fathers_name','email','message') 

views.py :

def save(request): 
    if 'submit' in request.POST: 
     form = ResumeForm(request.POST) 
     if form.is_valid(): 
      form.save() 
      form = ResumeForm() 
      return render(request, '/success/', {'form': form}) 
    else: 
     form = ResumeForm() 
    args = {} 
    args.update(csrf(request)) 
    args['form'] =form 
    return render_to_response('create.html',args) 

urls.py :

urlpatterns = patterns('', 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^save/', 'Resume.views.save'), 
    url(r'^success/$', TemplateView.as_view(template_name='success.html')), 
) 

을 이제는 모두 잘 작동합니다. 문제는 내가 양식을 제출하면 성공 페이지로 이동하고 이전 페이지로 돌아 가면/save/page는 제출 한 필드의 모든 값을 보유한다는 것입니다. 내가 누를 때 입력란을 지우는 방법 back button to go back to that form page having url as "/save/ "

답변

1

이것은 브라우저 동작에 관한 것입니다. 브라우저는 새 페이지를 호출하는 대신 캐시에 페이지를 표시합니다.

U는 javascript를 사용하여이 문제를 해결할 수 있습니다. 불행히도 브라우저는 자바 스크립트 코드를 다시 실행하지 않습니다.

그러나 유 시도 할 수는 : JQuery와

+0

이 행을 쓸 위치> –

+0

어디서나 원합니다. 예 : w3schools의 [link] (http://www.w3schools.com/jquerymobile/tryit.asp?filename=tryjqmob_event_pageshow) . – obayhan

1

에 의해

$(window).bind("pageshow", function() { 
    // Clean form values 
}); 

이 브라우저 구현 세부입니다. JavaScript를 사용하여 해킹하거나 캐시를 깨뜨릴 수 있습니다. 주제는 this stackoverflow question에서 논의됩니다.

그러나 더 나은 UI 접근 방식은 AJAX를 사용하여 양식의 일련 화 된 버전을 POST하는 것일 수 있습니다. view에서 양식을 확인하고 처리하면 (예 : 이력서 모델 테이블에 새 행 삽입) 양식 필드를 지우는 일부 JavaScript를 호출하는 JSON 응답을 보낼 수 있습니다 (어쩌면 .reset() 사용). 그런 다음 사용자가 다른 양식을 제출하면 쉽게 제출할 수 있습니다.

또한 POST (현재 render() 응답이 있음) 이후에 HttpResponseRedirect을 사용하는 것이 좋습니다. 이렇게하면 사용자가 양식을 다시 제출하고 데이터베이스의 행을 복제 할 수 없게됩니다.

관련 문제