【问题标题】:configuring the urls.py gives problem in the url generation配置 urls.py 会在 url 生成中出现问题
【发布时间】:2020-12-30 15:40:58
【问题描述】:

我有一个运行 django 3.1 的应用程序。我的网址确实有问题。我想要么是 urls.py 有问题,要么是在我的关联视图中。 在我的应用程序中,视图 (fil main.py) 称为“main”。 如果我转到 url http://127.0.0.1:8000/main/,我会看到正确的视图呈现。 我的视图包括一个可以单击的按钮。当我点击时,网址现在是:http://127.0.0.1:8000/main/main/,这是一个错误(未找到 404 页面)。

我的 url.py 是:

from django.urls import path
from django.conf import settings
from django.conf.urls.static import static
from django.urls import re_path
from django.views.static import serve

from . import main

urlpatterns = [
    path('main/', main.main, name='main'),
    path('', main.main, name='main'),
]

我的观点使用以下内容:

return render(request,'main.html')

我必须补充一点,这是我的第一个 dango 项目。我尝试先查看 django 文档,并尝试在我的 urls.py 中进行各种更改...到目前为止没有成功。

谢谢。

S/

【问题讨论】:

  • 你的 project/urls.py 是什么样的?
  • 感谢@Mugoma。这里是。 oxybom 是我项目中的应用程序名称。 urlpatterns = [ path('admin/', admin.site.urls), path('', include('oxybom.urls')), ]

标签: django


【解决方案1】:

为了访问.../main/**main**/,您需要将其添加到您的 urlpatterns 中,如下所示:

urlpatterns = [
    path('main/**main**/', views.my_view_function, name='star-main')
]

paths的第一个参数是你要访问的url,第二个参数是视图函数(或类),负责处理访问这个url时的逻辑,第三个参数是你要使用的快捷方式名称您的模板(和其他地方)来引用这个特定的 url。

旁注 - 您的两个 urlpattern 具有相同的名称 (main) - 不确定这是否会引发错误,但它肯定会导致问题!

【讨论】:

  • 如果我这样做,它并不能解决问题。下一个 url 是:../main/main/main/,它给出了一个新的错误。我不明白为什么要添加“主要”。此外,因此不会保存上下文。
  • 问题不在于您的urls.py,而在于您的模板 - 您的按钮如何重定向用户?您不断将main 附加到您的网址格式。
  • 谢谢@Daniel。我想你确实是对的。我的表单如下:
    。我想我需要摆脱 action 属性..
  • 您也可以尝试像这样使用 url 标签:action="{% url 'main' %}" - 但是,main 是您的两个 url 的名称 - 您需要给它们提供唯一的名称,否则您可能会遇到不需要的行为.
  • 是的,它的工作原理是一样的。感谢您的帮助。
【解决方案2】:

那么没有路径可以处理http://127.0.0.1:8000/main/main/

你项目中的路径是

/

/main/

如果您需要处理上述路径,您可以: project/urls.py

urlpatterns = [     
    ...
    path('main/', include('oxybom.urls')), 
]

app/urls.py

...
urlpatterns = [
    ...
    path('main/main/', main.main, name='main'),
]

【讨论】:

  • 事实上,我不希望 url 以这种方式构造。我希望它保留 127.0.0.1:8000/main127.0.0.1:8000 并保存上下文。
  • 那么问题出在您的 html 上。请包括它
猜你喜欢
  • 2012-04-25
  • 2013-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 2017-01-05
  • 1970-01-01
  • 2021-07-29
相关资源
最近更新 更多