点击django中的href链接时,获得意外/不需要的url路径



因此,以下是我定义的所有URL:

path("", views.index, name="index"),
path("login", views.login_view, name="login"),
path("logout", views.logout_view, name="logout"),
path("register", views.register, name="register"),
path("new", views.new.as_view(), name="new"),
path("<int:user>/watchlist", views.watchlist, name="watchlist"),
path("<int:user>/<str:name>", views.name, name="name"),
path("<str:user>/<str:name>/watchlist/remove", views.remove, name="remove-from-watchlist"),
path("<int:user>/<str:name>/watchlist/add", views.add, name="add-to-watchlist"),
path("<str:user>/<str:name>/bid", views.bid, name="bid"),
path("<str:user>/<str:name>/close", views.close, name="close-bid"),
path("<str:user>/<str:name>/comment", views.comment, name="comment"),
path("add-category", views.addC, name="add-Category"),
path("categories", views.categories, name="categories"),
path("<str:cat>/category", views.cat, name="category-page")

根据经验,问题出在所有与"观察列表"相关的URL上。例如,当我在索引视图中时,到path("<int:user>/watchlist", views.watchlist, name="watchlist"),的路径是<a class="nav-link" href="{{ user.id }}/watchlist">Watchlist</a>url路径显示相同的-

http://127.0.0.1:8000/2/watchlist其中2是用户id。然后当我转到url<a class="nav-link" href="categories">Categories</a>时,后面的url路径是http://127.0.0.1:8000/2/categories"2"不应该在那里!我在锚标签中特别硬编码了路径

我面临另一个问题:当我在索引视图中并单击包含<a href=/{{ user.id }}/{{ item.Title }}的锚点标记时where项。标题是say"Magic Broom";,我得到的url路径是

http://127.0.0.1:8000/2/Magic而它本应该http://127.0.0.1:8000/2/Magic扫帚

有人能解释一下这里发生了什么吗。。。

路径的正确反向是这样的:

path("<int:user>/watchlist", views.watchlist, name="watchlist")

<a href="{% url 'watchlist' user=xyz %}"> some text </a>

在您的示例中,您构建了url";手动";相反,您应该始终通过路径反向->由{%url…%}完成的名称定义。为什么?如果你的网址发生了变化,你只需要更新设置中的路径.py

最新更新