Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改模板,使动态url在Django中工作?_Python_Django - Fatal编程技术网

Python 如何更改模板,使动态url在Django中工作?

Python 如何更改模板,使动态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> </

我正在Django中创建一个动态URL。以下是我遵循的步骤: URL.py中的第一个

然后创建了相关的products.html文件

然后我看到它工作得很好,正如预期的那样!这意味着url.py和views.py中没有问题,但仅在my.html模板中存在问题。你能告诉我有什么问题吗? 多谢各位

编辑: base.html

<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'),