2017-10-20 95 views
0

在主页的用户配置文件的链接这是我的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> 

我想从家中的链接中显示每个博客的页面。但它正在出现问题。

我在做什么错在这里?

+0

什么错误,你所看到的? –

+0

@SandeepBalagopal NoReverseMatch at/ 找不到'author'的'author_desc'参数'('',)'。 1模式尝试:['(?P [a-zA-Z0-9] +)/ $'] –

回答

0

检查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 %} 
+0

其实我有一个问题,每当我创建用户配置文件时,它不会自动添加到博主。所以,为了解决这个问题,我使用了django信号(post_save)在它们之间创建一个信号。所以,无论何时我创建一个新的配置文件,它都会自动为它创建博客配置文件。那么,我是否需要改变这个或那个信号是OKAY? –

+0

如果您拥有一个足以满足不需要额外Blogger模型的个人档案模型。将blogger_bio字段添加到您的个人资料模型。然后在Post模型中将ForeignKey指定给Profile。那更好。 –

+0

没有配置文件模型。我只有发布,评论,Blogger和用户模型。 –

0

试试这个

{% 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 %} 
+0

在views.py中,我添加了blogger_list = Blogger.objects.all(),最后是'return render(request,'home.html',{'posts':posts,'blogger_list':blogger_list})'并且模板'blogger_list.username'。还是行不通。 –

+0

您是否打算显示主页上的所有博客链接?如果是,则必须在模板中使用循环来显示每个博客链接。 'bloggers_list'是博客列表,'blogger_object'应该是单个博客作者 – rajkris

+0

如何在{%url%}中使用for循环? –