未找到带有参数“()”和关键字参数“”的“guestbook.posts”的反向操作。尝试了 0 种模式:[]

Posted

技术标签:

【中文标题】未找到带有参数“()”和关键字参数“”的“guestbook.posts”的反向操作。尝试了 0 种模式:[]【英文标题】:Reverse for 'guestbook.posts' with arguments '()' and keyword arguments '' not found. 0 pattern(s) tried: []未找到带有参数“()”和关键字参数“”的“guestbook.posts”的反向操作。尝试了 0 种模式:[] 【发布时间】:2014-11-23 16:26:00 【问题描述】:

我不断收到这个错误,我花了几个小时试图找出我的代码出了什么问题。

这是我的文件:

views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.template import RequestContext, loader
from django.utils import timezone

from guestbook.models import Post

# Create your views here.
def posts(request):
    if (request.POST.get('name', 0)):
        name = request.POST['name']
        text = request.POST['text']
        title = request.POST['titile']
        p = Post(name=name, title=title, text=text, pub_date=timezone.now())
        p.save()
    newest = Post.objects.order_by('-pub_date')[:5]
    template = loader.get_template('guestbook/index.html')
    context = RequestContext(request, 
        'newest_post': newest,
        'kalli': 543
    )
    return HttpResponse(template.render(context))

def write(request):
    return render(request, 'guestbook/form.html')

urls.py:

from django.conf.urls import patterns, url, include

from guestbook import views

urlpatterns = patterns('',
        url(r'^$', views.posts, name='posts'),
        url(r'^write', views.write, name='writer'),
)

*/urls.py

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    url(r'^polls/', include('polls.urls', namespace="polls")),
    url(r'^guestbook/', include('guestbook.urls', namespace="guestbook")),
    url(r'^admin/', include(admin.site.urls)),
)

我的错误在这个文件的某个地方,但我在问题中输入了其他代码以防万一,

/guestbook/write 处的 NoReverseMatch

带有参数“()”和关键字的“guestbook.posts”反向 未找到参数“”。尝试了 0 个模式:[]

请求方法:GET 请求 URL: localhost:8000/guestbook/write Django 版本:1.6.6 异常类型:NoReverseMatch 异常值:

带有参数“()”和关键字的“guestbook.posts”反向 未找到参数“”。尝试了 0 个模式:[]

异常位置: c:\python33\lib\site-packages\django\core\urlresolvers.py 在 _reverse_with_prefix,第 456 行 Python 可执行文件:c:\python33\python.exe Python 版本:3.3.5

以上是我的错误。

论坛.html

What's you name?<br>
<form action="% url 'guestbook.posts' %" method="post">
    % csrf_token %
    <input type="text" name="name">
    <input type="text" name="title">
    <textarea rows=15 cols=100 name="text">
    <input type="submit" value="Send post">
</form>

【问题讨论】:

【参考方案1】:

要反转命名空间 URL,您需要将它们称为 guestbook:posts 而不是 guestbook.posts,根据 the documentation。

【讨论】:

这个技巧帮助了我。但我很困惑,因为我有代码可以工作,例如像这样:&lt;a href="% url 'some-index' %"&gt;Some&lt;/a&gt; 但第二个网址仅适用于应用名称&lt;a href="% url 'app_name:some2-index' %"&gt;Some2&lt;/a&gt; 这里可能是什么问题? some-index 是例如来自 app_nr1,some2-index 来自 app_nr2。但是它们的工作方式不同,例如,在同一个 html 模板中使用它们?我怎样才能找到造成这种情况的原因?

以上是关于未找到带有参数“()”和关键字参数“”的“guestbook.posts”的反向操作。尝试了 0 种模式:[]的主要内容,如果未能解决你的问题,请参考以下文章

未找到带有参数“(”,)”和关键字参数“”的“比率”的反向

未找到带有参数“()”和关键字参数“”的“登录”的反向操作

未找到带有参数“()”和关键字参数“”的“password_change_done”的反向

未找到带有参数“()”和关键字参数“”的“send_referral_code”的反向

未找到带有参数“()”和关键字参数“”的“guestbook.posts”的反向操作。尝试了 0 种模式:[]

未找到带有参数“()”和关键字参数“'pk':6”的“post_edit”的反向。尝试了 0 种模式:[]