Я работал над проектом django, и он очень похож на instagram и twitter, одна из функций, которые он должен иметь, - это упоминание пользователей, использующих "@" в текстовых полях. Я немного исследовал, как я могу это сделать в django, и я практически ничего не нашел, кроме некоторых библиотек, таких как django-упоминания, которые я не понимаю, как это работает, но я также обнаружил, что это возможно использование реакции, но я не знаю, возможно ли реализовать реакцию на почти готовый проект django. Как может работать эта функция? Должен ли я использовать response или любой javascript?
models.py
class Post(models.Model):
text = models.CharField(max_length=200)
user = models.ForeignKey(User, related_name='imageuser', on_delete=models.CASCADE, default='username')
views.py (представление загрузки содержит форму, в которой хранится сообщение для последующего его отображения, а основное представление отображает загруженное сообщение)
def upload(request):
if request.method == 'POST':
form = PostForm(request.POST, request.FILES)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
return redirect('home')
print('succesfully uploded')
else:
form = PostForm()
print('didnt upload')
return render(request, 'home.html', {'form': form})
def main(request):
contents = Post.objects.all()
context = {
"contents": contents,
}
print("nice2")
return render(request, 'home.html', context)
forms.py
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = ('text')
exclude = ['user']
html (форма, которая загружает сообщение с текстом, в котором пользователь может ввести @mentions)
<form method="post" action="{% url 'upload' %}" enctype="multipart/form-data">
{% csrf_token %}
<input type="text" name="text" placeholder="Add a comment..." required="" id="id_text">
<button class="submit-button" type="submit">Save</button>
</form>
html (Здесь отображается сообщение)
{% for content in contents %}
{% if contents %}
<div class="element"><p>{{ content.text }}</p></div>
{% endif %}
{% endfor %}
Пожалуйста, если у вас есть какие-либо вопросы, дайте мне знать, помните, что любая идея помогает.