我怎样才能使评论中的标记用户成为该用户主页的超链接? (姜戈)
Posted
技术标签:
【中文标题】我怎样才能使评论中的标记用户成为该用户主页的超链接? (姜戈)【英文标题】:How could I make tagged user in the comment a hyperlink to that user's home page? (Django) 【发布时间】:2014-10-05 22:46:10 【问题描述】:就像 facebook 一样,如果我在评论中标记某人,例如“@Mike”,然后在我发布之后,然后在网站上,我可以在那里看到我的评论,并且评论的内容有 @Mike是我单击它的超链接,它可以将我重定向到该用户的页面。我不知道该怎么做,有什么建议吗?
顺便说一句,目前我可以将标记的用户名检索到我的后端,但我只是不知道如何将该用户名作为超链接呈现。
【问题讨论】:
在 URL 中捕获一些用户唯一字段(ID?用户名?)并将该用户的信息呈现在某个“用户页面”模板上?然后只需将链接指向正确的位置即可。 URL 调度几乎涵盖了如何将 url 处理为“静态”(始终指向相同的内容)或“动态”(使用参数)。创建必要的视图,使用用户名(或其他)作为用户标识符创建指向该视图的 url,你应该没问题。 在我标记了一些用户之后,我将它渲染到模板comment
,所以页面源就像
@Mike 是个傻瓜
,我的意思是我怎么能创建这个“@Mike”超链接,只是这个“@Mike”,而不是整个
标签内容。
【参考方案1】:这应该可以 保存表单后,放置此脚本
p = re.compile('@[a-z]+')
for word in yourform.comment.split():
if p.match(word) != None:
new_word=list(word)[1:len(list(word))]
name=''
for elenemts in new_word:
name += elements
在'if'条件下写在下面的行(不能用适当的缩进写在这里)
new_comment=re.sub('@[a-z]+','<a href='+name+'s_profile>'+name+'</a>',yourform.comment)`
现在在您的模板中将您的“new_comment”呈现为安全
new_comment|safe
【讨论】:
【参考方案2】:Facebook 在@
之后的每次按键时都会从浏览器询问他们的数据库。只要您选择了用户名,比如说@Mike
,他们就会使用您选择的值向表单添加一个输入字段,例如:
<input value="@12345678:Mike"></input>.
您提交评论,服务器处理您的请求,使用<input>
值替换您文本框中的@Mike
。
【讨论】:
【参考方案3】:您可以使用template tag
:安全。
假设您的帖子上下文变量是:quote
= @Mike is a fool
获取@Mike
,并添加html
使其成为链接并在保存帖子时重新插入。所以保存的帖子是:
quote
= <a href="mikes_homepage">@Mike</a> is a fool
然后在你的html template
中使用safe:
quote|safe
这是safe
模板标签的文档链接:
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#safe
【讨论】:
酷,安全模板标签就是我需要的所有东西。谢谢。以上是关于我怎样才能使评论中的标记用户成为该用户主页的超链接? (姜戈)的主要内容,如果未能解决你的问题,请参考以下文章