Javascript 如何提及在django中使用@的用户

Javascript 如何提及在django中使用@的用户,javascript,django,reactjs,django-models,django-views,Javascript,Django,Reactjs,Django Models,Django Views,我一直在django上做一个项目,它与instagram和twitter非常相似,它需要具备的功能之一就是提到在文本字段中使用“@”的用户。我一直在研究如何在django中做到这一点,除了django提到的一些库之外,我什么也没发现,我不了解它是如何工作的,但我也发现使用react可以做到这一点,但我不知道是否有可能对一个几乎完成的django项目实施react。这个功能如何工作?我应该使用react还是任何javascript models.py class Post(models.Model

我一直在django上做一个项目,它与instagram和twitter非常相似,它需要具备的功能之一就是提到在文本字段中使用“@”的用户。我一直在研究如何在django中做到这一点,除了django提到的一些库之外,我什么也没发现,我不了解它是如何工作的,但我也发现使用react可以做到这一点,但我不知道是否有可能对一个几乎完成的django项目实施react。这个功能如何工作?我应该使用react还是任何javascript

models.py

class Post(models.Model):
    text = models.CharField(max_length=200)
    user = models.ForeignKey(User, related_name='imageuser', on_delete=models.CASCADE, default='username')

from django.contrib.auth.models import User
class Profile(models.Model):
  user= models.OneToOneField(User, on_delete=models.CASCADE)
views.py(上传视图包含存储文章的表单,以便以后显示,主视图显示上传的文章)

forms.py

class PostForm(forms.ModelForm):

    class Meta:
        model = Post
        fields = ('text')
        exclude = ['user']
html(上传带有文本的帖子的表单,用户可以在其中键入@references)


{%csrf_令牌%}
拯救
html(此处显示文章)

{%用于contents%中的内容}
{%if contents%}
{{content.text}

{%endif%} {%endfor%}
如果您有任何问题,请告诉我,记住任何想法都有帮助。

我发现post有助于使用martor文本编辑器,但这并不难

在我的应用程序中,我有一个帐户应用程序,其中包含配置文件模型,用于将提及链接@[user]重定向到用户的配置文件

models.py

class Post(models.Model):
    text = models.CharField(max_length=200)
    user = models.ForeignKey(User, related_name='imageuser', on_delete=models.CASCADE, default='username')

from django.contrib.auth.models import User
class Profile(models.Model):
  user= models.OneToOneField(User, on_delete=models.CASCADE)
url.py

path('profile/<str:user>/',views.profile, name='profile'),
设置.py

MARTOR_MARKDOWN_BASE_MENTION_URL = '/accounts/profile/'
然后编辑器继续与用户讨论@[user]/accounts/profile/user

我发现post在使用martor文本编辑器的想法上有所帮助,但这并不难

在我的应用程序中,我有一个帐户应用程序,其中包含配置文件模型,用于将提及链接@[user]重定向到用户的配置文件

models.py

class Post(models.Model):
    text = models.CharField(max_length=200)
    user = models.ForeignKey(User, related_name='imageuser', on_delete=models.CASCADE, default='username')

from django.contrib.auth.models import User
class Profile(models.Model):
  user= models.OneToOneField(User, on_delete=models.CASCADE)
url.py

path('profile/<str:user>/',views.profile, name='profile'),
设置.py

MARTOR_MARKDOWN_BASE_MENTION_URL = '/accounts/profile/'

然后,编辑器继续与用户讨论@[user]/accounts/profile/user

您可以实际构建标记,以在您想要的任何字段中检查@(模式),并且在自定义标记功能中,只有您可以检查用户是否存在(如果存在),然后执行任何您想要的操作(如创建通知或链接到提到的用户配置文件)

######像这样的 #######

@register.filter(name='notice',is_safe=True)
@细滤器
def(价值):
res=“”
my_list=value.split()
对于我的_列表中的i:
如果i[0]=='@':
尝试:
stng=i[1:]
user=user.objects.get(username=stng)
如果用户:
profile\u link=user.userprofile.get\u绝对值\u url()
i=f“
除User.DoesNotExist外:
打印(“无法获取数据”)
res=res+i+“”
返回res
然而,为了提高效率,您还可以使用正则表达式来查找模式。
现在,将名为“提及”的标记添加到HTML中,不要忘记加载标记

您可以实际构建标记,以在您想要的任何字段中检查@(模式),并且在自定义标记函数中,您只能检查用户是否存在(如果存在),然后执行任何您想要的操作(如创建通知或链接到提到的用户配置文件)

######像这样的 #######

@register.filter(name='notice',is_safe=True)
@细滤器
def(价值):
res=“”
my_list=value.split()
对于我的_列表中的i:
如果i[0]=='@':
尝试:
stng=i[1:]
user=user.objects.get(username=stng)
如果用户:
profile\u link=user.userprofile.get\u绝对值\u url()
i=f“
除User.DoesNotExist外:
打印(“无法获取数据”)
res=res+i+“”
返回res
然而,为了提高效率,您还可以使用正则表达式来查找模式。
现在将名为“提及”的标签添加到HTML中,不要忘记加载标签

@Md.NazmulHassan请你制定一个答案好吗?我之前已经看到了堆栈问题,我不明白:(@Md.NazmulHassan,你能制定一个答案吗?我之前已经看到了堆栈问题,我不明白:(