簡體   English   中英

Django NoReverseMatch錯誤,反向函數不帶參數不起作用

[英]Django NoReverseMatch error, reverse function not work with no arguments

這個NoReverseMatch錯誤讓我發瘋。 我正在使用Django 1.6,並且已經檢查了我的網址,但它不起作用。 請對此進行指導。

我基本上想做一件非常簡單的事情,就是當我提交一個html表單時,我得到了我想要的數據,然后重定向到結果頁面,但這是行不通的...

這是我的index.html文件

<form name="input" action="{% url 'whatspring:sending' %}" method="post">
{% csrf_token %}
    Recipient: <input type="text" name="usrname"> 
    <br>
<input type="submit">
</form>
<br>

我的view.py

def index(request):
    return render(request,'springsend/index.html')

def sending(request):
    var = request.POST['usrname']
    doSomethinghere()
    return HttpResponseRedirect(reverse('whatspring:results'))

def results(request):
    return render(request,'springsend/send_results.html')

然后我的應用程序urls.py

from django.conf.urls import patterns, url
from springsend import views

urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
    url(r'^results/$', views.results, name='results'),
)

和主要的urls.py

from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',

    url(r'^admin/', include(admin.site.urls)),
    url(r'^send/', include('springsend.urls', namespace="whatspring")),
)

我試圖研究問題,似乎反向函數無法獲取我想要的反向URL的名稱(即名稱空間“ whatspring”下的“結果”。。。)我缺少一些瑣碎的東西嗎? 請幫助。

您的urls.py (springsend一個)似乎沒有sending視圖的url,這可能就是為什么{% url 'whatspring:sending' %}找不到它的原因。

只需將其更改為

from django.conf.urls import patterns, url
from springsend import views

urlpatterns = patterns('',
    url(r'^$', views.index, name='index'),
    url(r'^results/$', views.results, name='results'),
    url(r'^sending/$', views.sending, name='sending'), # this line
)

每個可訪問的視圖都需要一個URL。 用戶的瀏覽器需要有一些發送地址。 如果僅將其發送到您的域而不包含url,則Django將無法確定請求哪個url。 Django不會自動生成這些網址(可能很好)。

(用戶本人不需要知道此URL;您無需在任何地方放置任何`鏈接。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM