【问题标题】:Django Url not matching Page no foundDjango Url 不匹配页面未找到
【发布时间】:2015-06-22 15:06:55
【问题描述】:

我有一个网址是

http://127.0.0.1:8000/users/profiles/?profile=17320

我在 urls.py 文件中定义了这一行。

url(r'^profiles/(?P<profile>\d+)/$', views.display_profile),

在运行时,点击上面的 url,它没有打开页面,实际上显示了所有可用的 url 列表。还有Page not found (404)

【问题讨论】:

    标签: django django-urls


    【解决方案1】:

    你的正则表达式匹配

    http://127.0.0.1:8000/profiles/17320
    

    不是

    http://127.0.0.1:8000/users/profiles/?profile=17320
    

    所以应该修复。还获取参数(如 ?profile=..)未在 django url 中捕获。

    【讨论】:

    • 那么如何在 django 中做到这一点
    • 如果您想在查询字符串中传递参数并在代码中捕获它们,请使用 request.GET.get("param_name")
    • @MTaqi,将您的视图映射到 /users/profiles/ url 并从请求中的 GET dict 获取“profile”参数。
    【解决方案2】:

    您的网址与此类似

    127.0.0.1:8000/profiles/542/
    

    如果您想使用配置文件 ID 作为 GET 参数,请更改您的网址以匹配

    url(r'^profiles/$', views.display_profile),
    

    在您的视图函数内或在get(self, request, *args, **kwargs) 方法内的基于类的视图内使用

    profile_id = request.GET.get('profile', None)      # where None is the value to use
                                                       # if profile does not exist
    

    希望对你有帮助

    我之前写了另一个答案来回答你完全相同的问题

    How to access url part in python django?

    【讨论】:

    • 127.0.0.1:8000/profiles/ 上加载视图很好,但是当我运行这个 url 127.0.0.1:8000/profiles/542/ 时它不起作用并显示 404 错误。
    • 404调试页面显示的可用url有哪些?
    【解决方案3】:

    作为参数,查询字符串和 url 部分存在差异。
    您正在做的是查询字符串,并且您已将部分 url 的 url 模式设置为参数。
    所以你的网址应该是http://127.0.0.1:8000/users/profiles/17320/

    阅读更多URL Dispatcher

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 2018-02-27
      • 2019-02-02
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多