如何解决模板渲染过程中出错:NoReverseMatch at /OnetoOneRelationApp/ Reverse for 'RestaurantDetails' with arguments '('',)' not found
ERROR : noreverseMatch at /OnetoOneRelationApp/
Reverse for 'RestaurantDetails' with arguments '('',)' not found. 1 pattern(s) tried: ['OnetoOneRelationApp/(?P<pk>[0-9]+)/$']
我在尝试从餐厅的超链接访问餐厅详细信息时遇到上述错误 name.当我在模板中使用“{{ restaurant.name }}”时它工作正常但是当我尝试使用下面的代码时它是 抛出错误 {{ restaurant.name }}"
模型.py:
from django.db import models
from django.urls import reverse
class Place(models.Model):
name = models.CharField(max_length=30)
address = models.CharField(max_length=70)
def __str__(self):
return self.name
class Restaurant(models.Model):
name = models.CharField(max_length=70)
place = models.OnetoOneField(Place,on_delete=models.CASCADE,primary_key=True)
servers_pizza = models.BooleanField(default=False)
def get_absolute_url(self):
return reverse('OnetoOneRelationApp:RestaurantDetails',kwargs={'pk': self.pk})
def __str__(self):
return self.name
class Waiter(models.Model):
name = models.CharField(max_length=30)
restaurant = models.ForeignKey(Restaurant,on_delete=models.CASCADE)
def __str__(self):
return self.name
urls.py:
from django.urls import path
from .views import RestaurantsList,WaiterRestaurantDetails
app_name = 'OnetoOneRelationApp'
urlpatterns = [
path('OnetoOneRelationApp/',RestaurantsList.as_view(),name='RestaurantsList'),path('OnetoOneRelationApp/<int:pk>/',WaiterRestaurantDetails.as_view(),name='RestaurantDetails'),]
视图.py
from django.views import generic
from .models import Restaurant
class RestaurantsList(generic.ListView):
model = Restaurant
template_name = 'OnetoOneRelationApp/Restaurants.html'
context_object_name = 'Restaurants_List'
class WaiterRestaurantDetails(generic.DetailView):
model = Restaurant
template_name = 'OnetoOneRelationApp/Restaurant-Details.html'
context_object_name = 'Restaurant'
餐厅.html
{% if Restaurants_List %}
{% for restaurant in Restaurants_List %}
<ul>
<li>
<a href="{{ restaurant.get_absolute_url }}" target="_blank">{{ restaurant.name }}</a>
</li>
</ul>
{% endfor %}
{% else %}
<h2> hey ! u don't have any Restaurants ..</h2>
{% endif %}
餐厅详细信息.html
{{ Restaurant.name }}
<br>
{{ Restaurant.servers_pizza }}
{% for waiter in Restaurant.waiter_set.all %}
<ul>
<li>
{{ waiter.name }}
</li>
</ul>
{% endfor %}
我也在主项目根目录的“已安装的应用程序”部分添加了我的应用程序。当我在 href 标签中使用 {{ restaurant.get_absolute_url }}
时它工作正常。但是当我使用 {% url 'OnetoOneRelationApp:RestaurantDetails' restaurant.id %}
提前致谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。