python - 使用 slug 字段找不到反向

标签 python django django-models django-templates django-views

我在使用带有 slug 字段的 get_absolute_url 时遇到错误。已尝试了一些堆栈中已存在但不起作用的建议。任何人都可以帮我解决这个问题吗? Please refer this link for traceback.

模型.py

模型中的代码。

from django.urls import reverse

class Post(models.Model):
    title = models.CharField(max_length=50)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, on_delete=models.CASCADE)
    draft = models.BooleanField(default=False)
    publish = models.DateTimeField(auto_now=False, auto_now_add=False)
    slug = models.SlugField(unique=True)
    image = models.ImageField(upload_to=upload_location,
            null=True,
            blank=True, 
            width_field="width_field", 
            height_field="hieght_field")
    hieght_field = models.IntegerField(default=0)
    width_field = models.IntegerField(default=0)
    content = models.TextField()
    updates = models.DateTimeField(auto_now=True, auto_now_add=False)
    timestamp = models.DateTimeField(auto_now=False, auto_now_add=True)

    def get_absolute_url(self):
        return reverse('post:detail', kwargs={'slug':self.slug})

View .py

View 中的代码。

def post_list(request):
    queryset_list = Post.objects.active()
    if request.user.is_staff or request.user.is_superuser:
        queryset_list = Post.objects.all()
    query = request.GET.get('q')
    if query:
        queryset_list = queryset.filter(
            Q(title__icontains=query)
        ).distinct()
    context = {
        'object_list':queryset_list,
        'posts': page,
        "page_request_var": page_request_var,
    }
    return render(request, 'index.html', context)

urls.py

url 映射。

urlpatterns = [
    path('detail/<slug:slug>/', views.detail, name='detail'),
]

html页面

index.html 中的代码

{% for obj in object_list %}
<div class="container">
<p class="card-text">{{obj.content|linebreaks|truncatechars:120}}</p>
<a href="{{obj.get_absolute_url}}" class="btn btn-primary">View</a>
<!-- <a href="{% url 'post:detail' pk=obj.id %}"> {{obj.title}} </a> -->
</div>
{% endfor %}

最佳答案

由于index.html中的注释行而发生错误<a href="{% url 'post:detail' pk=obj.id %}"> {{obj.title}} </a>删除此行后,页面将完美加载,并且在详细信息 View 中应将“pk”替换为工作详细信息页面的 slug。 def detail(request,slug): #slug replaced pk

关于python - 使用 slug 字段找不到反向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59634189/

相关文章:

python - 使用 nosetests 时出现 AssertionError

python - django中的脏字段

Python 测试我的数据是否服从对数正态分布

python - 无效的 HTTP_HOST header : '127.0.0.1:8000' error when using python-decouple to set ALLOWED_HOSTS

python - 在 Django 模型中设置整数字段的默认值

python - 如何使用shutil.copy修复Python 3中的 "FileNotFoundError: [Errno 2]"

python - “较低”对象没有属性 'partition'

python - 来自 Django 中多个字段的唯一值的字典列表

django admin 相关字段查找无效 : icontains

python - 卸载应用程序 A,因为应用程序 B 在一次旧迁移中具有依赖项