【问题标题】:How to show articles from a user (django)?如何显示来自用户(django)的文章?
【发布时间】:2023-03-03 12:14:01
【问题描述】:

我有一个“文章”模型在应用程序中,“文章”有用户作为外键:

(/dashboard/models.py)

class Article(models.Model): 
     author = models.ForeignKey(User, on_delete=models.CASCADE)

以下是我为每个用户调用 create detailview 的方法: (/blog/views.py)

def auth(request):
    def get_user():
        if hasattr(request, 'user'):
            return request.user
        else:
            from django.contrib.auth.models import AnonymousUser
            return AnonymousUser()

    return {
        'user': SimpleLazyObject(get_user),
        'messages': messages.get_messages(request),
        'perms':  lazy(lambda: PermWrapper(get_user()), PermWrapper)(),
    }

(/blog/urls.py):

urlpatterns = [
    path(r'^<pk>/?$',
         DetailView.as_view(
             model=User,
             template_name='blog_detail.html',
             context_object_name='user_object'
         ), name='blog_detail'),]

在模板“blog_detail.HTML”中,我可以调用每个用户的姓名、个人资料,但我不能调用该用户撰写的文章。 (/blog/templates/blog_detail.html)

{% if article_list in user_object.Article.set_all %}
    {% for article in article_list %}

我哪里出错了,请帮帮我:(

【问题讨论】:

    标签: django django-views


    【解决方案1】:

    在views.py中定义UserBlogsDetailView,如下所示。在get_context_data() 方法中添加上下文。

    views.py

    from django.utils import timezone
    from django.views.generic.detail import DetailView
    
    
    class UserBlogsDetailView(DetailView):
    
        model = User
        template_name='blog_detail.html'
    
        def get_context_data(self, **kwargs):
            context = super().get_context_data(**kwargs)
            # Try to add context for the user in this method
            return context
    

    urls.py

    urlpatterns = [
        path('<slug:slug>/', UserBlogsDetailView.as_view(), name='blog-detail'),
    ]
    

    【讨论】:

    • 嗨,感谢您的帮助,但后来我收到了一个 FieldError,它说:“无法将关键字 'slug' 解析为字段。选项包括:文章、日期_加入、电子邮件、名字、组、ID、 is_active、is_staff、is_superuser、last_login、last_name、logentry、密码、配置文件、user_permissions、用户名”。我该怎么办?
    猜你喜欢
    • 2015-08-10
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-09
    • 1970-01-01
    相关资源
    最近更新 更多