【问题标题】: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”,而不是整个

    标签内容。

标签: python html django web hyperlink


【解决方案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

      【讨论】:

      • 酷,安全模板标签就是我需要的所有东西。谢谢。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-01
      • 2019-05-12
      相关资源
      最近更新 更多