3

http://127.0.0.7:8000/edit-paragraph/6/edit/にアクセスしようとすると、次のエラーでPage Not Found が表示されます。

Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
^admin/
^login/$
^login/home/
^logout/$
^edit-section/(?P<s_id>\d+)/edit/
^edit-section/(?P<s_id>\d+)
^edit-paragraph/(?P<p_id>\d+)/edit/
The current URL, edit-paragraph/6/, didn't match any of these.

私の urls.py には、次のものがあります。

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    (r'^login/$', 'mysite.auth.views.login_user'),
    (r'^login/home/', 'mysite.auth.views.logged_in'),
    (r'^logout/$', 'mysite.auth.views.logout_user'),
    (r'^edit-section/(?P<s_id>\d+)/edit/', 'mysite.auth.views.edit_section_form'),
    (r'^edit-section/(?P<s_id>\d+)', 'mysite.auth.views.edit_section'),
    (r'^edit-paragraph/(?P<p_id>\d+)/edit/', 'mysite.auth.views.edit_paragraph')

)

私には、URL http://127.0.0.7:8000/edit-paragraph/6/edit/が私の URLConf の最後の行と一致するはずです。私が間違っていることについてのアイデアはありますか?同様の URL を照合できます。

r'^edit-section/(?P<s_id>\d+)/edit/'

前もって感謝します!


編集:

リダイレクトしていたことが判明しました。今、私はこれを持っています.ブラウザはページが見つからないというエラーを出しています:

@login_required
def edit_paragraph(request, p_id):
p = get_object_or_404(Paragraph, id=p_id)

if request.method == 'POST':
    form = ParagraphForm(request.POST)
    if form.is_valid():
        p.title = request.POST['title']
        p.description = request.POST['description']
        p.save()
        return HttpResponse('foo')
    else:
        form = ParagraphForm({ 'title': p.title, 'description': p.description })
        return render_to_response('auth/edit-paragraph.html', { 'form': form }, context_instance=RequestContext(request))

return HttpResponseRedirect('/edit-paragraph/'+p_id+'/edit/')

編集 - 解決済み:

無限ループを回避するために思いついた修正と、その他の問題が発生していた場合は次のとおりです。

@login_required
def edit_paragraph(request, p_id):
    p = get_object_or_404(Paragraph, id=p_id)
    form = ParagraphForm({ 'title': p.title, 'description': p.description })

    if request.method == 'POST':
        form = ParagraphForm(request.POST)
        if form.is_valid():
            p.title = request.POST['title']
            p.description = request.POST['description']
            p.save()
            return HttpResponseRedirect('/login/home')

    return render_to_response('auth/edit-paragraph.html', { 'form': form }, context_instance=RequestContext(request))
4

1 に答える 1

0

いくつかのこと:

  1. リダイレクトされている場合は、実際にリダイレクトされていることを確認してください。ブラウザがURLオートコンプリート機能を利用しすぎているだけではありません。
    Web開発者ツール(Firebug、Web Inspectorなど)は、リダイレクトが発生した場合にそれをログに記録します。
    多くのブラウザは、末尾の周りで奇妙な動作をし/ます。これを確認するには、ブラウザが以前にアクセスしたことのないポート(つまり、manage.py runserver 8001)で開発サーバーを実行してから、再試行します。

  2. あなたurls.py(またはあなたのview関数)の中または前のどこかで例外が発生した場合、URLパターンが実際に評価されていない可能性があるため、djangoはあなたが404を持っていると見なします。あなたの場合、これは発生していないようです。 djangoは、チェックしているURLを教えてくれました。ただし、、、、およびファイルをコンソールにインポートしてsettings.py、view関数を直接実行して、例外が発生しないことを確認することもできます。urls.pyviews.py

于 2011-08-25T19:29:44.690 に答える