Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
django-当视图需要一个参数时,表单操作参数中包含了什么?_Django_Django Templates_Django Forms_Django Views - Fatal编程技术网

django-当视图需要一个参数时,表单操作参数中包含了什么?

django-当视图需要一个参数时,表单操作参数中包含了什么?,django,django-templates,django-forms,django-views,Django,Django Templates,Django Forms,Django Views,这就是我所拥有的: myview.py,该视图包含一个参数user: def myview(request, user): form = MyForm(request.POST) .... return render_to_response('template.html',locals(), context_instance=RequestContext(request)) 用户通过url传递 url.py: ... urlpatterns += patterns('myv

这就是我所拥有的:

myview.py
,该视图包含一个参数
user

def myview(request, user):
   form = MyForm(request.POST)
   ....
   return render_to_response('template.html',locals(), context_instance=RequestContext(request))
用户
通过url传递

url.py

...

urlpatterns += patterns('myview.views',
    (r'^(?P<user>\w+)/', 'myview'),
)

...
如果
myview
函数需要一个参数,那么动作参数的形式是什么


现在我有
action=“.”
。我问这个问题的原因是,当我在(templates.html)中填写表单并单击submit按钮时,我完全没有看到从该表单传递的字段值。当我单击submit按钮时,几乎就像我在传递一个空表单。有什么想法吗?谢谢大家!

它不需要任何东西。假设您位于以下url:

www.yoursite.com/users/johnsmith/
您的表格应为:

<form name="form" method="post" action="">

如果要显式设置操作,假设模板中有变量username

<form name="form" method="post" action="{% url myview.views username %}">

或者,您可以在url.py中为url指定一个名称,这样您就可以像这样引用它:

# urls.py
urlpatterns += patterns('myview.views',
    url(r'^(?P<user>\w+)/', 'myview', name='myurl'), # I can't think of a better name
)

# template.html
<form name="form" method="post" action="{% url myurl username %}">
#url.py
urlpatterns+=模式('myview.views',
url(r'^(?P\w+/),'myview',name='myurl'),#我想不出更好的名字了
)
#template.html

您正在发布到与表单相同的视图。因此,首先,视图被调用并服务于表单。发布表单时,将调用相同的视图,但这次您将处理表单。这就是为什么这个动作是空的

您可以使用
request.path
,这在大多数情况下都有效

我来调查一下。有道理。谢谢你的回复。如果是这样的话,我应该做些什么来避免它?去掉行动中的圆点。“.”。然后表单将发布到同一视图并进行处理。你想避免什么?如果您想发布到另一个视图,可以将路径设置为活动路径,而不是将其保留为空。如果操作属性为空,某些浏览器(例如,最近的Chrome版本)将无法发布。@shacker maybe
action=“。”
足以解决Chrome的问题吗?使用URL模板标记,您需要在URL周围有
'
作为:
{%URL'myurl'参数\u to_pass%}
<form name="form" method="post" action="{% url myview.views username %}">
# urls.py
urlpatterns += patterns('myview.views',
    url(r'^(?P<user>\w+)/', 'myview', name='myurl'), # I can't think of a better name
)

# template.html
<form name="form" method="post" action="{% url myurl username %}">