Python django如何将参数从url传递到视图

Python django如何将参数从url传递到视图,python,regex,django,url,parameters,Python,Regex,Django,Url,Parameters,我试图在问题url的末尾添加一个参数no_rep,作为显示不同视图的信号。我正在使用Django 1.8,并遵循askbot的url模式 这是url.py: url( (r'^%s(?P<id>\d+)/' % QUESTION_PAGE_BASE_URL.strip('/') + r'(%s)?' % r'/no-rep:(?P<no_rep>\w+)'), views.readers.question,

我试图在问题url的末尾添加一个参数
no_rep
,作为显示不同视图的信号。我正在使用Django 1.8,并遵循askbot的url模式

这是url.py

url(
        (r'^%s(?P<id>\d+)/' % QUESTION_PAGE_BASE_URL.strip('/') +
        r'(%s)?' % r'/no-rep:(?P<no_rep>\w+)'),
        views.readers.question,
        name='question'
    ),
def question(request, id, no_rep):
    if no_rep == '1':
        request.session['no_rep'] = True
    else:
        request.session['no_rep'] = False

我找不到有关+、%和的信息,?是的,这可能就是问题所在。有人能解释一下正则表达式是如何使用基本url的吗?当我输入url
http://localhost:8000/question6/test-问题/no_rep:1
请求。会话['no_rep']
应设置为true,但不是。我遗漏了什么?

在所有替换之后,您的url看起来是这样的(%):
r'^question(?p\d+)/(/no rep:(?p\w+))”
,所以:
1.
试题缺少部分

2.您在命名组周围有奇数分组
no_rep
(这是合法的,但是)

所以对于像
http://localhost:8000/question6/test-问题/否代表:1
您的url模式应该如下所示:
r'^%s(?P\d+)/test question/(?:no_rep:(?P\d+))'%question\u PAGE\u BASE\u URL.strip('/')
(如果希望字母匹配,可以更改\w+最后一组中的\d+)


关于非捕获组
(?:…)
以及+和的含义?您可以在Python re模块中阅读。

您尝试过
http://localhost:8000/question6/test-问题?当我输入时,它自动变成
http://localhost:8000/question6/test-问题/?no_rep=1带有
/
,但它也不起作用。