我得到一個頁面時,我嘗試訪問http://127.0.0.7:8000/edit-paragraph/6/edit/,並出現以下錯誤未找到匹配:URL模式在Django
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')
)
對我來說,它顯然看起來像這樣的網址http://127.0.0.7:8000/edit-paragraph/6/edit/應該匹配我的URLConf的最後一行。任何想法,我做錯了什麼?它能夠匹配類似網址:提前
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))
在你的錯誤中說'edit-paragrah/6 /不匹配 - 在URL的結尾沒有'edit'。錯誤錯誤? – Pit
@Pit - Nope ...我告訴它去/ edit-paragraph/6/edit /,並重定向到那個。 – katherine
這很奇怪!這個錯誤是完全正確的,因爲你沒有一個匹配'edit-paragraph/6 /'的規則。我們能否看到'edit_paragraph'-view的代碼?也許有一個不應該在那裏的重定向! – Pit