简体   繁体   English

如何将 django 中的数据从 html 模板传递给 js

[英]How to pass data from django to js from html template

I have following files as mentioned below and I want to know how can I pass the django username to js in the index.html file我有以下文件,如下所述,我想知道如何将 django 用户名传递给 index.html 文件中的 js

view.py file查看.py 文件

from django.shortcuts import render
from django.contrib.auth.decorators import login_required

from .models import Message
import json

def index(request):
    return render(request, 'chat/index.html')
@login_required
def room(request, room_name):
    messages = Message.objects.filter(room=room_name)[0:25]

    return render(request, 'chat/room.html', {'room_name': room_name,
     'username': json.dumps(request.user.username),'messages': messages})

models.py file模型.py 文件

from django.db import models
from django.contrib.auth import get_user_model


User = get_user_model()

class Message(models.Model):
    username = models.CharField(max_length=50)
    room = models.CharField(max_length=255)
    content = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ('date_added',)

    def __str__(self):
        return self.username

script in index.html index.html 中的脚本

<script>
            document.querySelector('#room-name-input').focus();

            document.querySelector('#room-name-submit').onclick = function(e) {
                var roomName = document.querySelector('#room-name-input').value;
                var userName = JSON.parse( {{ username|safe }} );
                window.location.replace(roomName + '/?username=' + userName);
            };
</script>
var userName = JSON.parse( `{{ username|safe }}` ); // add quotes

Try using quotation to wrap the Django variable in the js.尝试使用引号将 Django 变量包装在 js 中。 For example:例如:

var userName = JSON.parse("{{ username|safe }}");

I solved this by using from django.utils.safestring import mark_safe with the json.dumps in the views.py file我通过在views.py文件中使用django.utils.safestring import mark_safejson.dumps解决了这个问题

from django.shortcuts import render
from django.utils.safestring import mark_safe
from django.contrib.auth.decorators import login_required
from django.contrib.auth import get_user_model
from .models import Message
import json

User = get_user_model()
def index(request):
    username = mark_safe(json.dumps(request.user.get_username()))
    return render(request, 'chat/index.html',{'username':username})


@login_required
def room(request, room_name):

    messages = Message.objects.filter(room=room_name)[0:25]

    return render(request, 'chat/room.html', {'room_name': room_name,
     'username': mark_safe(json.dumps(request.user.get_username())),'messages': messages})

index.html索引.html

<script>
            document.querySelector('#room-name-input').focus();

            document.querySelector('#room-name-submit').onclick = function(e) {
                var roomName = document.querySelector('#room-name-input').value;
                var userName = {{ username }}
                console.log(userName);
                window.location.replace(roomName+ '/?username=' + userName);
            };
</script>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM