Python 如何更改模板,使动态url在Django中工作?
我正在Django中创建一个动态URL。以下是我遵循的步骤: URL.py中的第一个 然后创建了相关的products.html文件 然后我看到它工作得很好,正如预期的那样!这意味着url.py和views.py中没有问题,但仅在my.html模板中存在问题。你能告诉我有什么问题吗? 多谢各位 编辑: base.htmlPython 如何更改模板,使动态url在Django中工作?,python,django,Python,Django,我正在Django中创建一个动态URL。以下是我遵循的步骤: URL.py中的第一个 然后创建了相关的products.html文件 然后我看到它工作得很好,正如预期的那样!这意味着url.py和views.py中没有问题,但仅在my.html模板中存在问题。你能告诉我有什么问题吗? 多谢各位 编辑: base.html <nav> <div class="logo"> <span>LOGO</span> </
<nav>
<div class="logo">
<span>LOGO</span>
</div>
<ul class="nav-links" id="sidenav">
<li><a href="{% url 'home' %}">Home</a></li>
<li><a href="{% url 'products' %}">Products</a></li>
<li><a href="{% url 'services' %}">Services</a></li>
<li><a href="{% url 'portfolio' %}">Portfolio</a></li>
<li><a href="{% url 'about' %}">About</a></li>
<li><a href="{% url 'contact_us' %}">Contact us</a></li>
<li><a href="{% url 'form' %}">Form</a></li>
</ul>
<div class="burgers">
<div class="line1"></div>
<div class="line2"></div>
<div class="line3"></div>
</div>
</nav>
编辑:@sigdev
如果这意味着产品详细信息页面的url:
path('products/<int:my_id>/', views.product_detail, name='product_detail'),
然后修复产品视图以更好地理解,并将其命名为product_detail view:
必须创建产品列表视图后,如:
def product_list(request, *args):
object_list = Product.objects.all()
custom_context = {
'title': 'product_list',
'object_list': object_list
}
return render(request, 'product_list.html', custom_context)
对于模板中的URL,您必须这样调用它们:
<a href="{% url 'product_list' %}">Product List</a>
<a href="{% url 'product_detail' my_id=object.id %}">Product Details for product {{ object.id }} </a>
您需要有两个单独的URL和视图,一个用于所有产品的常规产品列表页面,另一个用于特定产品页面
path('products/', views.products, name='products'),
path('product/(?P<id>\d+)/', views.product, name='product'),
正如您在错误页面中清楚地看到的,问题不是来自您发布的任何代码,而是来自base.html中的代码。是的,先生,它来自base.html。我添加了我的HTML代码片段如何解决它?这里似乎有个问题:href={%url'products%}位于my base.htmlYes。因为您的产品URL需要一个ID参数。href={%URL'products/'%}和href={%URL'products/my_ID/'%}是的,这是正确的,但my base中存在一个问题。htmlYour base.html需要有一个指向“产品”URL的链接,而不带my_ID参数,因为您没有引用任何特定的产品。然后产品页面应该有一个所有单个产品URL的列表。或者,您可以将所有产品URL添加到全局上下文处理器中,以便在每个页面上使用,从而将所有单个产品URL放在基本模板中。现在我明白了,为什么我需要有两个单独的页面。但是请编辑为什么这个url在创建两个页面后抛出错误:抱歉,它不能被正确读取,但希望你能看到那里发生了什么。虽然我没有为产品详细信息创建另一个链接,但我按照你说的操作了我的base.html,并添加了这个。它仍然显示了错误,我在我的代码中添加了上述错误的屏幕截图。我刚刚告诉你所有你应该修复的事情。如果你只解决一件事,它将不起作用。。。
path('products/<int:my_id>/', views.product_detail, name='product_detail'),
path('products/', views.product_list, name='product_list'),
def product_detail(request, my_id, *args):
obj = Product.objects.get(id=my_id)
custom_context = {
'title': 'product_detail',
'object': obj
}
return render(request, 'product_detail.html', custom_context)
def product_list(request, *args):
object_list = Product.objects.all()
custom_context = {
'title': 'product_list',
'object_list': object_list
}
return render(request, 'product_list.html', custom_context)
<a href="{% url 'product_list' %}">Product List</a>
<a href="{% url 'product_detail' my_id=object.id %}">Product Details for product {{ object.id }} </a>
path('products/', views.products, name='products'),
path('product/(?P<id>\d+)/', views.product, name='product'),