【问题标题】:Django NoReverseMatch error, reverse function not work with no argumentsDjango NoReverseMatch 错误,反向函数在没有参数的情况下不起作用
【发布时间】:2014-06-08 11:53:56
【问题描述】:

这个 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>

我的观点.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' 下的 'results'....)我错过了什么吗琐碎?请帮助。

【问题讨论】:

    标签: python django reverse


    【解决方案1】:

    您的urls.py(springsend one)似乎没有sending 视图的网址,这可能是{% 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(这可能很好)。

    (用户自己不需要知道这个url;你不需要在任何地方放置任何`链接。)

    【讨论】:

    • 谢谢,我认为功能视图不需要定义 url。非常感谢您的帮助
    • 恐怕您需要为每个可访问的视图设置一个 url;查看更新。
    猜你喜欢
    • 2018-12-28
    • 1970-01-01
    • 2014-01-20
    • 2023-03-21
    • 2019-06-11
    • 2017-10-01
    • 2012-06-07
    • 2021-03-29
    • 1970-01-01
    相关资源
    最近更新 更多