我试图在浏览器中访问以下url:http://localhost:8000/hourregistration/reminder/2016WK24/
我想弄明白为什么它会失败:
NoReverseMatch at /hourregistration/reminder/2016WK24/
Reverse for 'mailreminder' with arguments '('24',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['hourregistration/reminder/(?P<yearwknr>[0-9]{4}WK[0-9]{2})/$']
Error during template rendering
In template C:\Users\USER\Documents\Visual Studio 2015\Projects\PP\PP\hourregistration\templates\hourregistration\slacker-table-and-form.html, error at line 99
我的urls.py
:
app_name = 'hourregistration'
...
url(r'^reminder/(?P<yearwknr>[0-9]{4}WK[0-9]{2})/$', views.mailreminder, name='mailreminder'),
为了它的价值views.py
:
def mailreminder(request, yearwknr):
year = yearwknr[:4]
wknr = yearwknr[6:]
if request.method == "GET":
slackers = db.getSlackers(year, wknr)
context = {'slackers':slackers,
'yearwknr': wknr}
return render(request, 'hourregistration/slacker-table-and-form.html', context)
[omitted the POST path as it's not relevant]
部分模板在slacker-table-and-form.html
上失败。都在一个$(document).ready()
$('input#submit-form').click(function () {
if ($('input#receiverList').val().length == 0) {
$('#mail-warning').text('No recipients!');
} else {
$.ajax({
line 99 --> url: "{% url 'hourregistration:mailreminder' yearwknr %}",
type: "post",
dataType: "html",
data: {'csrfmiddlewaretoken': csrftoken, 'to': $('input#receiverList').val(), 'subject': $('input#subject').val(), 'body': $('form-body').val()},
success: function (data) {
$('#mail-warning').text('success!');
},
});
}
});
reverse()
从Django控制台工作:
reverse('hourregistration:mailreminder',kwargs={'yearwknr':'2016WK24'})
'/hourregistration/reminder/2016WK24/'
使用http://pythex.org/我的正则表达式似乎也能像预期的那样进行验证。然而,不知何故,Django似乎只抓住了regex的最后一点。作为一个简单的测试,我将url替换为:
url(r'^reminder/(?P<yearwknr>.+)/$', views.mailreminder, name='mailreminder'),
然后就成功了。所以我至少可以肯定我是在和正确的url()
斗争(在这个过程中只有1个额外的)网址.py无论如何,这是毫无争议的)。你知道吗
为什么我的正则表达式在浏览器中不匹配,而在Django控制台或外部正则表达式测试仪中却匹配?你知道吗
发现了问题。我在我的上下文(视图中)中传递
wknr
,而不是'yearwknr'现在
现在也很清楚为什么我只得到关键字参数的wknr部分。你知道吗
相关问题 更多 >
编程相关推荐