错误显示在Django
在主页的用户配置文件的链接这是我的models.py错误显示在Django
class Post(models.Model):
topic = models.CharField(max_length=200)
description = models.TextField()
created_by = models.ForeignKey(User, related_name='posts')
created_on = models.DateTimeField()
class Comment(models.Model):
commented_by = models.ForeignKey(User, related_name='comments')
commented_on = models.ForeignKey(Post, related_name='comments')
commented_text = models.CharField(max_length=500)
commented_time = models.DateTimeField(auto_now_add=True)
class Blogger(models.Model):
username = models.OneToOneField(User, related_name='bloggers')
blogger_bio = models.CharField(max_length=1000)
URL.py用户名
url(r'^(?P<username>[a-zA-Z0-9]+)/$', views.author_desc, name='author_desc'),
Views.py
from django.shortcuts import render, get_object_or_404
from .models import Post, User, Comment, Blogger
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def home(request):
posts_list = Post.objects.all()
return render(request, 'home.html', {'posts': posts})
和我home.html我想显示的地方:
<!DOCTYPE html>
<html>
<head>
<title>HOME</title>
</head>
<body>
<h2>All Blogs</h2>
{% for post in posts %}
<a href="{% url 'post_desc' pk=post.pk %}"><b>Post Topic: </b>{{ post.topic }}</br></a>
<b>Published Time: </b>{{ post.created_on }}</br>
<b>Author: </b><a href="{% url 'author_desc' blogger.username %}">{{ post.created_by }}</a></br></br>
{% endfor %}
</body>
</html>
我想从家中的链接中显示每个博客的页面。但它正在出现问题。
我在做什么错在这里?
检查blogger.username
参数是否为空。
Infact的模型看起来不太好。 Post模型中的ForeignKey应该是Blogger
模型。
class Post(models.Model):
created_by = models.ForeignKey(Blogger, related_name='posts')
然后在模板中,你可以做
{% for post in posts %}
<a href="{% url 'post_desc' pk=post.pk %}"><b>Post Topic: </b>{{ post.topic }}</br></a>
<b>Published Time: </b>{{ post.created_on }}</br>
<b>Author: </b><a href="{% url 'author_desc' post.created_by.user.username %}">{{ post.created_by.user }}</a></br></br>{% endfor %}
其实我有一个问题,每当我创建用户配置文件时,它不会自动添加到博主。所以,为了解决这个问题,我使用了django信号(post_save)在它们之间创建一个信号。所以,无论何时我创建一个新的配置文件,它都会自动为它创建博客配置文件。那么,我是否需要改变这个或那个信号是OKAY? –
如果您拥有一个足以满足不需要额外Blogger模型的个人档案模型。将blogger_bio字段添加到您的个人资料模型。然后在Post模型中将ForeignKey指定给Profile。那更好。 –
没有配置文件模型。我只有发布,评论,Blogger和用户模型。 –
试试这个
{% for post in posts %}
<a href="{% url 'post_desc' pk=post.pk %}"><b>Post Topic: </b>{{ post.topic }}</br></a>
<b>Published Time: </b>{{ post.created_on }}</br>
<b>Author: </b><a href="{% url 'author_desc' post.created_by.username %}">{{ post.created_by }}</a></br></br>
{% endfor %}
在views.py中,我添加了blogger_list = Blogger.objects.all(),最后是'return render(request,'home.html',{'posts':posts,'blogger_list':blogger_list})'并且模板'blogger_list.username'。还是行不通。 –
您是否打算显示主页上的所有博客链接?如果是,则必须在模板中使用循环来显示每个博客链接。 'bloggers_list'是博客列表,'blogger_object'应该是单个博客作者 – rajkris
如何在{%url%}中使用for循环? –
什么错误,你所看到的? –
@SandeepBalagopal NoReverseMatch at/ 找不到'author'的'author_desc'参数'('',)'。 1模式尝试:['(?P [a-zA-Z0-9] +)/ $'] –