Django接受用户表单输入并在输入的某个部分创建链接?

2024-10-08 18:29:06 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的模型.py公司名称:

class Post(models.Model):
    actualPost = models.CharField(max_length=200)

这是我的表单.py公司名称:

^{pr2}$

这是我的视图.py公司名称:

def createPostView(request):
    if request.method=='POST':
    form = PostForm(request.POST)
    if form.is_valid():
            stringPost = form.cleaned_data['actualPost'] #I'm assuming stringPost will now be the string version of the users input
            findLinks(stringPost)
            newPost = Post(actualPost = form.cleaned_data['actualPost'])

所以基本上在视图中,在获得用户input/post的字符串版本之后,我计划将该字符串发送给一个名为findLinks的函数。这是findLinks函数:

def findLinks(postString):
    word = ''
    totalLength = len(postString)
    for i in postString:
        if i=='@': #basically, I want anything after an '@' sign to be a link.. 
                   #so if the post is "Go to @www.google.com to search for anything"
                   #I want www.google.com to be a link 
            indexOfSign = postString.index(i)
            while ((indexOfSign != totalLength-1) and (postString[indexOfSign+1] != '')):
                 word += htmlString[indexOfSign+1]
                 indexOfSign += 1
    return word

函数返回“@”符号后的单词。既然它返回了@符号后面的单词,那么我该如何安全地将该单词设置为一个链接,以便当我将帖子放入模板中时,当我查看模板时,@符号后的单词将显示为链接?在

我想的一种可能的方法是,在python函数中,基本上返回post的字符串版本,除了在@符号后面用“and”括起来之外,但这行不通,因为出于安全原因,Django将用户输入解释为原始字符串而不是代码,对吗?在

我不想强迫Django将Post解释为代码而不是原始字符串,因为这会导致安全问题。有什么方法可以让我安全地把用户输入的内容保存到数据库中,然后在模板中,让“@”后面的所有单词都签署一个链接?在


Tags: to函数字符串pyform名称if符号
1条回答
网友
1楼 · 发布于 2024-10-08 18:29:06

声明如下类方法:

class Post(models.Model):
    actualPost = models.CharField(max_length=200)

    def get_link(self):
        if self.actualPost and '@' in self.actualPost:
            return self.actualPost.split('@', 1)[1]
        return None

在模板中

^{pr2}$

相关问题 更多 >

    热门问题