gpt4 book ai didi

python - 将帖子中提到的用户名作为个人资料链接返回到帖子内的这些用户

转载 作者:行者123 更新时间:2023-12-01 06:29:28 24 4
gpt4 key购买 nike

嘿,大家好,我正在尝试让我的代码来检查数据库中带有 @username 的帖子中提到的用户,并将该用户个人资料链接作为 @username 返回。我目前可以使用 View 中的 tagged_users 变量获取后端的用户。它存储提到的用户,但如何在模板中访问它,以便它为我提供指向这些用户配置文件的链接?到目前为止,我的代码是模板中的

{% if post.post|slice:":1" == '@' %}
<a href="{% url 'profile_with_pk' pk=user.username %}">
{{ post.post }}
</a>
{% else %}
{{ post.post }}
{% endif %}

这会将整个帖子作为链接返回,但不会返回帖子中提到的实际用户,而是创建指向当前登录用户的链接

这是我的代码,可以正确返回 tagged_users 列表中提到的用户,我想在模板中访问它,作为帖子中这些用户个人资料的链接。

def post(self, request, pk=None):
if pk:
user = User.objects.get(pk=pk)
else:
user = request.user
form = HomeForm(request.POST)
users = User.objects.all()
if form.is_valid():
post = form.save(commit=False)
post.user = request.user
post.save()
tagUsers = re.findall(r"@+(\w+)", post.post)
tagged_users = list()
for username in tagUsers:
user = User.objects.get(username=username)
tagged_users.append(user)
print(tagged_users)
text = form.cleaned_data['post']
form = HomeForm()
tag = tagged_users
return redirect('home')


context = {'form': form, 'text': text, 'users':users, 'user': user, 'tag':tag, 'tagUsers':tagUsers }
return render(request, self.template_name, context)

最佳答案

存在多个问题。让我们从这个开始:

 <a href="{% url 'profile_with_pk' pk=user.username %}">
{{ post.post }}
</a>

整篇文章都包含在链接中。我想你想建立一个到帖子作者的链接,对吧?然后(仅猜测您未发布的模型架构),您需要这样的东西:

# iteration through posts somewhere here
<a href="{% url 'profile_with_pk' pk=user.username %}">user.username</a>
{{ post.post }}

接下来,如果您已经标记了用户,则需要以某种方式将它们放入帖子的模板中。根据您希望如何将链接添加到提到的用户,这可能类似于:

 # iteration through posts somewhere here
<a href="{% url 'profile_with_pk' pk=user.username %}">user.username</a>
{{ post.post }}
Mentions: {% for tagged_user in tagUsers %} {{ tagged_user.username }} {% endfor %}

或者您想直接在帖子文本中插入链接?然后,您需要在将其传递给模板之前构建一个帖子结构(示例被剪断;将需要改进):

from django.utils.html import mark_safe

def post(self, request, pk=None):
...
post_text = post.post
tagUsers = re.findall(r"@+(\w+)", post.post)
tagged_users = list()
for username in tagUsers:
user = User.objects.get(username=username)
for match in re.finditer(username, post_text):
start = match.start()
end = match.end()
profile_link = reverse('profile_with_pk', kwargs={'pk': user.id})
post_text[start:end] = mark_safe(f'<a href="{profile_link}">username</a>')
...
# return post_text to template context and use in the same way as used post

关于python - 将帖子中提到的用户名作为个人资料链接返回到帖子内的这些用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59974411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com