我怎样才能使评论中的标记用户成为该用户主页的超链接? (姜戈)

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>.

您提交评论,服务器处理您的请求,使用&lt;input&gt; 值替换您文本框中的@Mike

【讨论】:

【参考方案3】:

您可以使用template tag安全

假设您的帖子上下文变量是:quote = @Mike is a fool

获取@Mike,并添加html 使其成为链接并在保存帖子时重新插入。所以保存的帖子是:

quote = &lt;a href="mikes_homepage"&gt;@Mike&lt;/a&gt; is a fool

然后在你的html template中使用safe

 quote|safe 

这是safe模板标签的文档链接:

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#safe

【讨论】:

酷,安全模板标签就是我需要的所有东西。谢谢。

以上是关于我怎样才能使评论中的标记用户成为该用户主页的超链接? (姜戈)的主要内容,如果未能解决你的问题,请参考以下文章

从锚 html 标记调用 javascript 函数

我怎样才能使一个字段只在某些条件下是必需的?

如何识别用户在评论框中输入的 URL?

UIImagePickerController 允许选择方形图像。但是我怎样才能使它成为 16:9?

更改 Ionic Toast 中的超链接颜色

从单元格获取超链接地址的用户定义函数