2012-05-21 2 views
2

나는 이미 this question에 대한 답변을 사용했으나 어떤 이유로 인해 좋은 결과를 얻지 못했습니다.동일한 장고 양식을 사용하여 개체 편집/추가

내 편집 양식과 양식 추가에 동일한 템플릿을 사용하려고합니다.

url(r'^app/student/new/$', 'edit_student', {}, 'student_new'), 
url(r'^app/student/edit/(?P<id>\d+)/$', 'edit_student', {}, 'student_edit'), 

그리고 내 views.py :

def edit_student(request, id=None, template_name='student_edit_template.html'): 
if id: 
    t = "Edit" 
    student = get_object_or_404(Student, pk=id) 
    if student.teacher != request.user: 
     raise HttpResponseForbidden() 
else: 
    t = "Add" 
    student = Student(teacher=request.user) 

if request.POST: 
    form = StudentForm(request.POST, instance=student) 
    if form.is_valid(): 
     form.save() 

     # If the save was successful, redirect to another page 
     redirect_url = reverse(student_save_success) 
     return HttpResponseRedirect(redirect_url) 

else: 
    form = StudentForm(instance=student) 

return render_to_response(template_name, { 
    'form': form, 
    't': t, 
}, context_instance=RequestContext(request)) 

그리고 내 forms.py :

class StudentForm(ModelForm): 
class Meta: 
    model = Student 
    exclude = ('teacher',) 

그리고 마지막으로 내 템플릿 student_edit_template.html :

<h1>{{ t }} Student</h1> 
<form action="/app/student/edit/{{ student.id }}" method="post"> {% csrf_token %} 
{{ form.as_p }} 
<input type="submit" value="Submit" /> 
</form> 
,536 여기 내 urls.py입니다 아마 여기 쉽게 뭔가를 누락

Page not found (404) 
Request Method: POST 
Request URL: http://192.168.1.3:5678/app/student/edit/ 

하지만이 시점에서 나는 적어도 그것에 눈의 다른 세트가 필요합니다 몇 가지 이유를 들어

이 404을 던지고있다.

미리 감사드립니다.

+0

URL은 http : //192.168.1.3 : 5678/app/student/edit/789 /'처럼 보이거나 URL에 ID가 없으므로 한 가지가 있습니다. – fish2000

+0

오른쪽 -하지만 그 학생 ID에 게시하고있는 템플릿에서 볼 수 있습니다, 그 URL에 게시해야합니다. 더 구체적이어야합니다. 레코드를 추가 할 때 404'ing입니다. 이것은 아직 생성되지 않은 ID와 관련이 있습니까? –

답변

2

/student/edit/에서 꼬리말에 ID가 필요하므로 404가 표시됩니다. 그렇지 않으면 경로가없고 /student/new/에서 오는 경우 아직 ID가 없습니다. 경로를 만들고 /student/edit/에 대해보고 논리를 넣어 POST에서 레코드를 만들 때 대소 문자를 처리하십시오.

+0

예 - 그게 전부였습니다. 템플릿에 'student'를 전달하지 않아서 어떤 경우에도 'id'는 절대 채워지지 않을 것입니다. 나는'student'를 패스 한 다음 POST 호출을 변경하여 후행 슬래시를 가져야했습니다. 그것은 트릭을했다. –

관련 문제