基本上,我正在编写一个应用程序,人们可以在其中发表博客和图片文章。到目前为止,我已经完成了让用户能够写文本帖子的任务。然而,当我试图创建一个帖子时,它会在应该返回“By:shrey”时返回“By:None”。在本例中,Bob是作者。这是一张图片:
理论上,当我进入一个帖子时,它应该说是谁写的。 以下是创建帖子的模板:
{% extends "social/base.html" %}
{% load crispy_forms_tags %}
{% block content4 %}
<h1>Make Your Post</h1>
<p>Write a post / Share an image</p>
<br>
<div class="container">
<form method="post">
{% csrf_token %}
{{form|crispy}}
<button type="submit" name="button">Make Post</button>
</form>
</div>
{% endblock content4 %}
以下是创建后期视图的函数:
class PostCreateView(CreateView):
model = Posts
fields = ['post_title', 'post_text_content']
def form_valid(self, form):
form.instance.author = self.request.user
print(self.request.user)
return super().form_valid(form)
先谢谢你
编辑:主页模板(显示帖子的模板):
{% extends "social/base.html" %}
{% block content %}
<h1>Your Feed</h1>
<p>This is your feed. Here, you'll see posts from people you follow.</p>
{% if user.is_authenticated %}
<p>You are logged in as {{user.username}}. This is your feed.</p>
{% else %}
<p>You are not logged in. This is a random feed.</p>
{% endif %}
{% for post in posts %}
<h1>{{ post.post_title }}</h1>
<p>By {{ post.post_author }} on <i>{{ post.post_date }}</i></p>
<p>{{ post.post_text_content }}</p>
{% endfor %}
<a href="/create">Click here to make a post.</a>
<br>
<a href="/logout">Click here to logout.</a>
<br>
<a href="/login">Click here to login.</a>
<br>
<a href="/register">Click here to sign up and make an account.</a>
<!--<p>Want to post something? Enter your info here: </p> -->
{% endblock content %}
职位模式:
class Posts(models.Model):
post_title = models.CharField(max_length = 40, help_text = 'Enter post title')
post_text_content = models.TextField(max_length = 1000)
post_author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
post_date = models.DateField(auto_now = True, auto_now_add = False)
#Make optional Image Field
class Meta:
ordering = ['post_title', 'post_author', 'post_date', 'post_text_content']
def __str__(self):
return self.post_title
def get_absolute_url(self):
return reverse('social-home')
字段的名称是
post_author
,而不是author
,因此您应该设置post_author
:这就是说,通常在Django中,而不是在模型字段前面加上模型名称。不这样做的一个原因是,您可以定义一次字段的抽象模型,然后使用继承将字段添加到其他模型中
相关问题 更多 >
编程相关推荐