私はPythonとDjangoを初めて使い、ブログを開発しています。ユーザーがサイトにログインして投稿を追加し、すべての投稿を自宅に表示されます。同時に私はユーザーの投稿をユーザープロフィールに表示したい。ブログ投稿のためDjangoのユーザー投稿はすべての投稿からフィルタリングされ、ユーザープロフィールに表示されます
私のモデルは
from django.db import models
from django.utils import timezone
class Blogpost(models.Model):
author = models.ForeignKey('auth.User')
title = models.CharField(max_length=200)
text = models.TextField()
created_date = models.DateTimeField(default=timezone.now)
published_date = models.DateTimeField(blank=True, null=True)
def publish(self):
self.published_date = timezone.now()
self.save()
def __str__(self):
return self.title
とviews.pyです:
views.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import render
from blogpost.models import Blogpost
def home(request):
context = {}
template = 'home.html'
return render(request,template,context)
def about(request):
context = {}
template = 'about.html'
return render(request,template,context)
@login_required(login_url='/accounts/login/')
def userprofile(request):
user = request.user
context = {'user': user}
user_posts=Blogpost.objects.filter(author=request.user).order_by('-published_date')
template = 'profile.html'
return render(request,template,context,{'user_posts':user_posts})
私は、クエリセットで返されるユーザーからの投稿を表示するには、このテンプレートを使用しています。
profile.html
{% extends 'base.html' %}
{% load staticfiles %}
{% block blogprofile %}
{{ user.username }}
{{ user.email }}
{% for Blogpost in user_posts %}
<div class="post">
<div class="date">
<p>{{ Blogpost.published_date }}</p>
<p>{{ Blogpost.author }}</p>
</div>
<h1><a href="{% url 'post_detail' pk=Blogpost.pk %}">{{ Blogpost.title }}</a></h1>
<p>{{ Blogpost.text|linebreaksbr }}</p>
</div>
{% endfor %}
{% endblock %}
投稿が取得されないのでprofile.htmlを開くと、ユーザー名とメールのみが表示されます。誰でも私が間違っているところで私を修正してください。
フレンドリーヒント:あなたは、Pythonに新しいしていることから、読むために数分かかり、[PEP 8](https://www.python.org/dev/ peps/pep-0008 /)。 – Melvyn