Я хочу изменить форму от пользователя и вернуть эту другую форму в 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:
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>
Исходный шаблон, который я изменяю, можно найти здесь.
Большое спасибо за помощь, буду очень рад любому совету!!
Ps: я использую Python 3.7.4
form
— это объект формы модели django, и он не обрабатывается какstr
. Можете ли вы объяснить в своем вопросе, каким будет желаемый результат? Без него трудно сформировать полезный ответ.@damon Вместо того, чтобы просто публиковать ссылку/контент, я хочу автоматически получать заголовок статьи, а также отображать его как заголовок. К сожалению, я не знаю, как добавить заголовок в форму, чтобы он отображался... :(