在django doc中提出改为GET方法使用urlpatterns,并且方便地处理这些变量。但如果至少有一个变量是不必要的,我将不得不在url.py中写更多行。我喜欢我可以避免这个吗?
实施例: 如果我想在给定年份中抽取一些帖子,在urlpatterns中我应该添加如下内容:
url(r'^articles/(?P<year>\d{4})/$', 'news.views.show_archive'),
url:... / articles / 1994 /
如果我想在特定年份制作特定月份的样本位置,在urlpatterns中我应该添加如下内容:
url(r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', 'news.views.show_archive'),
url:... / articles / 2003/03 /
但如果我想看到一年中特定月份创建的所有年份的记录,我还要添加这一行:
url(r'^articles/(?P<month>\d{2})/$', 'news.views.show_archive'),
url:... / articles / 03 /
但我想只做一行指定最大变量集,但这会处理任何这些URL。 说实话,我不确定这是可能的。
答案 0 :(得分:1)
regexp可以有可选部分,视图函数可以有可选参数。此外,您仍然可以使用查询字符串(通过request.GET
)来查找没有业务属于URL的内容(例如“搜索”视图的查询字词,列表视图的排序和过滤等)。
使用urlpatterns而不是querystrings是建立干净的“语义”网址,即/blog/posts/<post_id>/
而不是/blog/posts/?post_id=<post_id>
。
答案 1 :(得分:0)
url(r'^articles/(?P<year>\d{4})/(?P<month>\d{2})/$', 'news.views.show_archive'),
def show_archive(request,year=None,month=None):
if year and month:
.....................
elif year:
.....................
elif month:
....................