我有一个显示一些电影数据的视图。我认为让视图处理像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什么时候发挥作用?它们将如何在模板中生成?
答案 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中还是在查询字符串中定义。