Ich bin neu in Python und Django und jetzt ein Blog zu entwickeln. Ich habe dieses Modell, dass Benutzer auf der Website anmelden und ihre Beiträge und alle Beiträge hinzufügen können zu Hause angezeigt. Gleichzeitig möchte ich, dass die Beiträge des Benutzers im Benutzerprofil angezeigt werden.Django Benutzer Beiträge aus allen Posts gefiltert und im Benutzerprofil angezeigt werden
Mein Modell für den Blogpost ist
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
und die 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})
ich diese Vorlage verwenden die Beiträge der Benutzer von der Abfrage zurückgegeben anzuzeigen.
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 %}
Jetzt bekomme ich nur Benutzername und E-Mail, wenn ich das Profil.html öffne, wo der Beitrag nicht abgerufen wird. Kann mir bitte jemand korrigieren, wo ich Fehler mache.
Freundlich Tipp: da Sie Python neu sind, ein paar Minuten in Anspruch nehmen zu lesen [pep 8] (https://www.python.org/dev/ peps/pep-0008 /). – Melvyn