django url regex不匹配

时间:2011-05-03 03:13:31

标签: regex django django-urls

不确定为什么这与urls.py中的任何网址都不匹配。我用正则表达式检查器检查了它应该是正确的。

urls.py:

url(r'^toggle_fave/\?post_id=(?P<post_id>\d+)$', 'core.views.toggle_fave', name="toggle_fave"),

示例网址:

http://localhost:8000/toggle_fave/?post_id=7

选中使用this简单正则表达式进行检查。似乎是对的。有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

urlconf不用于匹配您网址的request.GET参数。你在视图中这样做。

你要么你的网址看起来像这样:

 http://localhost:8000/toggle_fave/7/

并使用以下方式匹配:

url(r'^toggle_fave/(?P<post_id>\d+)/$', 'core.views.toggle_fave', name="toggle_fave"),

您的观点如下:

def toggle_fave(request, post_id):
    post = get_object_or_404(Post, pk=post_id)
    ...

http://localhost:8000/toggle_fave/?post_id=7

和你的urls.py:

url(r'^toggle_fave/$', 'core.views.toggle_fave', name="toggle_fave"),

和views.py:

def toggle_fave(request):
    post_id = request.GET.get('post_id', '')
    if post_id:
        post = get_object_or_404(Post, pk=post_id)
    ...