【发布时间】:2021-09-13 22:18:56
【问题描述】:
我希望修改用户的表单并在 django 中返回不同的表单,但是我尝试了许多不同的方法,都在 views.py 中,包括:
- 直接修改
str(form) += "modification" -
newform = str(form) + "modification"返回一个新表单 - 在模型中创建不同的帖子,但后来我意识到这行不通,因为我只想要一个帖子
以上都产生了SyntaxError: can't assign to function call、TypeError: join() argument must be str or bytes, not 'HttpResponseRedirect'、AttributeError: 'str' object has no attribute 'save'等错误,还有一个权限错误说我不能修改表单之类的。
这是来自views.py的sn-p:
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['content']
title = ['title'] #
template_name = 'blog/post_new.html'
success_url = '/'
def form_valid(self, form):
#debugging
tempvar = (str(form).split('required id="id_content">'))[1].split('</textarea></td>')[0] #url
r = requests.get(tempvar)
tree = fromstring(r.content)
title = tree.findtext('.//title')
print(title)
form.instance.author = self.request.user
if "http://" in str(form).lower() or "https://" in str(form).lower():
if tempvar.endswith(' '):
return super().form_valid(form)
elif " http" in tempvar:
return super().form_valid(form)
elif ' ' not in tempvar:
return super().form_valid(form)
else:
return None
models.py:
class Post(models.Model):
content = models.TextField(max_length=1000)
title = models.TextField(max_length=500, default='SOME STRING') #
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
likes= models.IntegerField(default=0)
dislikes= models.IntegerField(default=0)
def __str__(self):
return (self.content[:5], self.title[:5]) #
@property
def number_of_comments(self):
return Comment.objects.filter(post_connected=self).count()
在 home.html 中,应该显示帖子(连同标题和内容):
<a
style="color: rgba(255, 255, 255, 0.5) !important;"
href="{% url 'post-detail' post.id %}">
<p class="mb-4">
{{ post.content }}
{{ post.title }} #
</p>
</a>
我正在修改的原始模板可以在here找到。
非常感谢您的帮助,我很乐意接受任何建议!
Ps:我使用的是 Python 3.7.4
【问题讨论】:
-
form是 django model forms object,它不作为str处理。你能在你的问题中解释期望的结果是什么吗?没有它就很难形成有用的答案。 -
@damon 我想自动获取文章的标题并将其显示为标题,而不仅仅是发布链接/内容。不幸的是,我不知道如何将标题添加到表单中以便可以显示... :(
标签: python python-3.x django forms