Django:在没有url映射的情况下调用视图函数

时间:2014-03-03 15:36:47

标签: django

如何将信息从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'页面?

我只是对实际调用视图有点困惑,在我希望视图更像传统函数的情况下,处理一些数据,而不是必须呈现新模板。

谢谢!

2 个答案:

答案 0 :(得分:4)

如果您希望浏览器调用视图,则总是需要一个URL。服务器怎么知道要调用哪个视图?唯一的方法是通过URL映射。请记住,浏览器和服务器之间没有持久的关系:他们可以通过URL的请求进行通信的唯一方式。

但是,您并不总是需要渲染模板。视图可以返回任何内容,包括原始文本或JSON。

我不明白你不重新加载另一页的意思。将数据发布到服务器 是对另一个页面的请求:这就是HTTP的工作方式。您当然可以选择发布到您当前所在的同一页面;事实上,这正是在推荐的Django模式中处理表单的方式。但是你仍然需要一个指向该页面的URL映射,以便首先获取它并处理提交的数据。

答案 1 :(得分:1)

除了理解和接受丹尼尔罗斯曼的回答之外,你还可以看看这两个包: