3

私はすでにこの質問の答えを使用しましたが、何らかの理由で良い結果が得られていません。

編集フォームと追加フォームに同じテンプレートを使用しようとしています。これが私のurls.py

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>

何らかの理由で、これは404をスローしています:

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

私はおそらくここで簡単な何かを見逃しているでしょうが、この時点で私は少なくともそれに別の目を向ける必要があります。

前もって感謝します!

4

1 に答える 1

3

404を取得しているのは/student/edit/、末尾にIDが必要なためです。そうでない場合、ルートがなく、から来たときには/student/new/まだIDがありません。/student/edit/POSTでレコードを作成する場合のケースを処理するために、ルートとビューを作成し、そこにロジックを配置します。

于 2012-05-21T00:38:15.430 に答える