我有这个错误:
反向表示"详细信息",关键字参数"{'pk": "}"未找到。 尝试了 1 种模式:['条目\/(?P[0-9]+($']
在第 7 行:
从_calender_entry.html
<div class="calender_entry col-lg-4">
<h2> {{ entry.name }} </h2>
<h4> {{ entry.date }} </h4>
<p>
{{ entry.description }}
</p>
<button onclick="window.location='{% url 'details' pk=entry.id %}'" class="btn btn-primary"> View Details </button>
</div>
这是来自我的 urls.py 文件:
urlpatterns = [
path('', views.index, name='index'),
path('entry/<int:pk>', views.details, name='details'),
path('admin/', admin.site.urls),
]
这是 views.py 的方法:
def index(request):
entries = Entry.objects.all()
return render(request, 'myapp/index.html', {'entries' : entries})
def details(request, pk):
entry = Entry.objects.get(id=pk)
return render(request, 'myapp/details.html', {'entry' : entry})
这是 models.py
class Entry(models.Model):
name = models.CharField(max_length=100)
date = models.DateTimeField()
description = models.TextField()
created = models.DateTimeField( auto_now_add = True )
def __str__(self):
return f'{self.name} {self.date}'
_calender_entry.html包含在索引.html文件中,如下所示:
{% block content %}
<div class="container">
<div class="row">
{% for entry in entries %}
{% include 'myapp/_calender_entry.html' %}
{% endfor %}
</div>
</div>
谁能告诉我如何解决这个问题?
现在 Django 强制你每个应用程序都有自己的 urls.py。
在 myapp/目录中创建 urls.py 文件
# myapp/urls.py
from django.urls import path
from myapp import views
urlpatterns = [
path('', views.index, name='index'),
path('entry/<int:pk>/', views.details, name='details'),
]
项目 urls.py 必须如下
# calenderproject/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include(('myapp.urls', 'myapp'), namespace='myapp')),
]
在模板中使用如下方式
# myapp/_calender_entry.html
<a href="{% url 'myapp:details' pk=entry.id %}" class="btn btn-primary"> View Details </a>
这就是它的工作原理,我已经检查过了
我发现了错误,请从模板中删除此代码_calender_entry.html
<!-- {% include 'myapp/_calender_entry.html' %} -->
虽然这用HTML Django平等地注释,但它执行它以在模板中使用{# {% include 'myapp / _calender_entry.html'%} #}
Django不会以这种方式执行它