我从一周开始搜索我的问题没有任何答案。我不知道我是否以良好的方式继续前进,但我试图找到一个如下所示的网址:article/title/0/search=ad/2017-08-01/2017-08-09/
;其中参数是(括号中):article/{filter}/{page}/search={search}/{date1}/{date2}/
。
我的url.py正则表达式是:
url(r'article/(?P<filter>.+)/(?P<page>\d+)/(?:search=(?P<search>.*)/)?(?:(?P<date1>(\d{4}-\d{1,2}-\d{1,2})?)/)(?:(?P<date2>(\d{4}-\d{1,2}-\d{1,2})?)/)?$')
当值search
,date1
和date2
填充时,我的网址会认为{searched word}/2017-08-01/2017-08-09/
是search
值。
当search
,date1
和date2
为空时,我的链接如下:article/title/0/search=///
。填写日期article/title/0/search=/2017-08-01/2017-08-09/
。
在我的模板中,我需要我的网址如下:{% url "view" filter page search date1 date2 %}
如果我以错误的方式做错,有人可以帮助我并纠正我吗?
修改
我会尝试以另一种方式重新提出问题:
在我的模板中,有一个不需要3个字段search, date1 and date2
的表单,所以它们可以是None(这是我的问题)。我有一些链接需要只更改其中一个视图参数filter, page
并将字段参数保留在网址中。
当表单POST到我的视图(实际上就像这个def AllArticle(request, filter, page, search="", date1="", date2="")
)时,我用它们来过滤我的ArticleModel对象(我不需要帮助,已经完成并且工作了)。
根据@Cory_Madden的说法,我之前从未使用过这种方法,但我不知道如何使用它。我刚尝试过,django给我一个MultiValueDictKeyError。
答案 0 :(得分:1)
这不是您使用GET参数的方式。您需要从request
对象访问它们。所以假设你有一个基于函数的视图,这就是你如何访问附加到你的URL的任何GET参数:
def index(request, name='World'):
search_param = request.GET['search']
...
在这种情况下,您的网址如下所示:
url(r'/(?P<name>.*)', views.index)
地址栏中的请求路径如下所示:
/Joe?search=search-term
request.GET['search']
会返回"search-term"
。