ここ(SO.com) にあるコードを使用して、同じテンプレートを使用してレコードの追加と編集の両方を行っていますが、新しいレコードを追加して [送信] をクリックすると、URLhttp://192.168.1.3:5678/app/student/edit/None/
に 404 が表示されますが、そうではありません。その理由を正確に確認してください。
my の関連部分は次のurls.py
とおりです。
url(r'^app/lesson/new/$', 'edit_lesson', {}, 'lesson_new'),
url(r'^app/lesson/edit/(?P<id>\d+)/$', 'edit_lesson', {}, 'lesson_edit'),
my の関連部分は次のviews.py
とおりです。
def edit_lesson(request, id=None, template_name='lesson_edit_template.html'):
if id:
t = "Edit"
lesson = get_object_or_404(Lesson, pk=id)
stu = get_object_or_404(Student, pk=sid)
if stu.teacher != request.user:
raise HttpResponseForbidden()
else:
t = "Add"
lesson = Lesson()
if request.POST:
form = LessonForm(request.POST, instance=lesson)
if form.is_valid():
form.save()
# If the save was successful, redirect to another page
return view_lessons(request)
else:
form = LessonForm(instance=lesson)
return render_to_response(template_name, {
'form': form,
't': t,
'lesson': lesson,
}, context_instance=RequestContext(request))
そして最後に、これが私のテンプレートです:
<h1>{{ t }} Lesson</h1>
<form action="/app/lesson/edit/{{ lesson.id }}/" method="post"> {% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Submit" />
</form>
本当に簡単なものが欠けていることは確かですが、指を置くことができないようです。違いがある場合は、Django 1.3.1 を使用しています。
ありがとう、MC