如何将信息从HTML表单传递到我的Python代码,而无需指定网址映射?例如,以下代码将我的'index.html'模板中的表单中的数据发送到'myview'映射,然后调用'myview'视图函数,最终呈现'mypage'模板...
的index.html
<form method="get" action="{% url 'myview' %}">
urls.py
urlpatterns = patterns('',
url(r'^mypage/$', views.myview, name='myview'),
)
views.py
def myview(request):
return render(request, 'myapp/mypage.html')
但是,我真的必须有一个网址映射吗?如果我不想重新加载其他网页怎么办?我只想留在同一个'index.html'页面?
我只是对实际调用视图有点困惑,在我希望视图更像传统函数的情况下,处理一些数据,而不是必须呈现新模板。
谢谢!
答案 0 :(得分:4)
如果您希望浏览器调用视图,则总是需要一个URL。服务器怎么知道要调用哪个视图?唯一的方法是通过URL映射。请记住,浏览器和服务器之间没有持久的关系:他们可以通过URL的请求进行通信的唯一方式。
但是,您并不总是需要渲染模板。视图可以返回任何内容,包括原始文本或JSON。
我不明白你不重新加载另一页的意思。将数据发布到服务器 是对另一个页面的请求:这就是HTTP的工作方式。您当然可以选择发布到您当前所在的同一页面;事实上,这正是在推荐的Django模式中处理表单的方式。但是你仍然需要一个指向该页面的URL映射,以便首先获取它并处理提交的数据。
答案 1 :(得分:1)
除了理解和接受丹尼尔罗斯曼的回答之外,你还可以看看这两个包: