Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有NoReverseMatch错误的Django表单POST_Django_Forms_Post - Fatal编程技术网

带有NoReverseMatch错误的Django表单POST

带有NoReverseMatch错误的Django表单POST,django,forms,post,Django,Forms,Post,在html中: <form role="form" method="post" action="{% url 'myapp:add_review' %}" enctype="multipart/form-data"> {% csrf_token %} <div class="form-group"> <div class="col-sm-10"> <input id="review" name="

在html中:

<form role="form" method="post" action="{% url 'myapp:add_review' %}" enctype="multipart/form-data">
    {% csrf_token %}
    <div class="form-group">
        <div class="col-sm-10">
             <input id="review" name="review" type="text">
        </div>
    </div>
    <button type="submit" class="btn btn-default"> Submit </button>
</form>
在URL.py中

app_name = 'myapp'
urlpatterns = [
    url(r'^$', views.IndexView.as_view(), name='index'),

    # register, login, logout
    url(r'^register/$', views.UserFormView.as_view(), name='register'),
    url(r'^login/$', views.login_user, name='login'),
    url(r'^logout/$', views.logout_user, name='logout'),

    # individual article page
    url(r'^(?P<item_id>[0-9]+)/$', views.single_item, name='single_item'),
    url(r'^(?P<item_id>[0-9]+)/add_review/$', views.add_review, name='add_review'),
]
app_name='myapp'
URL模式=[
url(r'^$',views.IndexView.as_view(),name='index'),
#注册、登录、注销
url(r'^register/$',views.UserFormView.as_view(),name='register'),
url(r“^login/$”,views.login\u user,name='login'),
url(r“^logout/$”,views.logout\u user,name='logout'),
#个人文章页
url(r'^(?P[0-9]+)/$',views.single_item,name='single_item'),
url(r'^(?P[0-9]+)/add_review/$',views.add_review,name='add_review'),
]
非常基本的东西,在每个单独的项目页面中,我想要一个表单来为每个项目编写和发布评论,然后返回到同一个项目页面

当我在“单个项目”页面中时,会出现以下错误:

Reverse for 'add_review' with arguments '('',)' and keyword arguments '{}' not found. 
1 pattern(s) tried: ['(?P<item_id>[0-9]+)/add_review/$']
add_review'与参数“(”,)”和关键字参数“{}”相反。
尝试了1个模式:['(?P[0-9]+)/add_review/$']

通常,这些类型的错误表明URL有问题,没有找到这样的模式,缺少一些参数等等。从这个特定的错误来看,您似乎没有将
item\u id
传递给url匹配器。因此,Django无法找到合适的URL。你有:

url(r'^(?P<item_id>[0-9]+)/add_review/$', views.add_review, name='add_review')
这应该构造一个有效的url(例如,
../1/add_review/
),Django应该识别该url。但是,我相信您的
add\u review()
函数也需要使用
item\u id
参数,否则您可能会由于意外的函数参数而得到
TypeError

至于返回值,我将使用
redirect
而不是
render
,就像您在成功发布后重定向一样。尽管您可能也需要传递一个
项目id
,因为您的URL配置指定:a)URL应该有
项目id
和b)
单个项目()
需要
项目id
。像这样的方法应该会奏效:

def add_review(request, item_id):
    ...
    return redirect('myapp:single_item', {'item_id': item_id})

single\u item
的签名应该是这样的:
single\u item(request,item\u id)

通常,这些类型的错误表示URL有问题,没有找到这样的模式,缺少一些参数等等。从这个特定的错误来看,您似乎没有将
item\u id
传递给url匹配器。因此,Django无法找到合适的URL。你有:

url(r'^(?P<item_id>[0-9]+)/add_review/$', views.add_review, name='add_review')
这应该构造一个有效的url(例如,
../1/add_review/
),Django应该识别该url。但是,我相信您的
add\u review()
函数也需要使用
item\u id
参数,否则您可能会由于意外的函数参数而得到
TypeError

至于返回值,我将使用
redirect
而不是
render
,就像您在成功发布后重定向一样。尽管您可能也需要传递一个
项目id
,因为您的URL配置指定:a)URL应该有
项目id
和b)
单个项目()
需要
项目id
。像这样的方法应该会奏效:

def add_review(request, item_id):
    ...
    return redirect('myapp:single_item', {'item_id': item_id})

single\u item
的签名应该是这样的:
single\u item(request,item\u id)

我知道id部分有问题,不知道在哪里以及如何。谢谢你的详细解释,现在对我来说完全有意义了。我知道id部分出了问题,不知道在哪里以及如何。谢谢你的详细解释,现在我完全明白了。