对于'details',找不到关键字参数"{'pk': }",则反向。尝试了 1 种模式:['条目\\/(?P<pk>[0-9]+)$']



我有这个错误:

反向表示"详细信息",关键字参数"{'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不会以这种方式执行它

相关内容

最新更新