如何组织django中的URL以处理GET数据和解析URL的视图?

时间:2012-02-01 20:41:42

标签: django url

我有一个显示一些电影数据的视图。我认为让视图处理像movie-id/1234这样的URL来搜索电影ID 1234可能是一个好主意。此外,我希望能够将ID输入到表单中并将其发送到服务器并搜索它。为此,我在下面显示的urls.py文件中创建了第二个条目。

urlpatterns = patterns('',
    url(r'movie-id/(?P<movie_id>.+?)/$', 'movieMan.views.detailMovie'),
    url(r'movie-id/$', 'movieMan.views.detailMovie', name='movieMan.detailMovie.post'),
)

因此,如果我想通过URL或GET或POST请求将数据传递给我的视图,我必须输入两个网址或者是否有更优雅的方式?在视图的代码中,我正在检查传入请求中是否有任何GET数据。

要使第二个url可用于模板引擎,我想使用{% url movieMan.detailMovie.post %}语法指定视图的url,我必须在此url上引入一个name属性来区分这两个。

我不确定我在这里是否认为太复杂了。我现在问自己,第一个url条目的优点是什么?有没有办法直接获取电影的URL?这些类型的URL什么时候发挥作用?它们将如何在模板中生成?

2 个答案:

答案 0 :(得分:2)

  

此外,我希望能够将ID输入表格中   将其发送到服务器并搜索它。

这实际上是搜索吗?因为如果你知道ID,并且ID是URL的一部分,你可以只有一个文本框,用户可以在其中写入ID,并使用javascript重定向到“正确的”URL。如果ID不存在,则视图应返回Http404

如果您指的是实际搜索,即用户提交查询字符​​串,您将需要某种列表/结果视图,在这种情况下,您将生成指向特定结果的所有链接,您将成为确定是对的。

答案 1 :(得分:0)

我认为没有更优雅的方式。

我做了几乎相同的事情:

url( r'^movies/search/((?P<query_string>[^/]+)/)?$', 'mediadb.views.search_movies' ),

url模式匹配带或不带搜索参数的网址。 在view-function中,您必须检查参数是在url中还是在查询字符串中定义。