[在Django中,如何查询登录用户的MYSQL数据库? (即针对特定用户的结果,而无需对用户ID进行硬编码)

问题描述 投票:0回答:1

到目前为止,我很抱歉,我不熟悉编程-尝试学习Django和Python。

查看:

def dashboard(request):
    return render(request, 'app/dashboard.html', {'my_custom_sql': my_custom_sql})

以下功能在模板中不输出任何内容

def my_custom_sql(self):
    return self.request.CustomUser.customuser_set.all()

以上替代,使用硬编码的原始SQL:

def my_custom_sql():
 current_user = 1
 with connection.cursor() as cursor:
     cursor.execute("SELECT first_name FROM customuser WHERE id = 
     %s",[current_user])
     row = cursor.fetchone()

以上方法,但是我找不到将用户标识硬编码到用户变量中的方法,将用户标识传递给查询。

模板:

<h3> Displaying User's First Name </h3>

{% if user.is_authenticated %}

    <p>The first name: {{my_custom_sql}}</p>

{% endfor %}
python mysql django orm
1个回答
0
投票

andtmc。欢迎来到SO。

您确实需要关闭if标签:

模板

{% if user.is_authenticated %}
    <p>The first name: {{my_custom_sql.first_name}}</p>
{% endif %}

views.py

def dashboard(request):
    return render(request, 'app/dashboard.html', {'my_custom_sql': my_custom_sql(request)})

def my_custom_sql(request):
    return CustomUser.objects.get(pk=request.user.pk)

根据您的型号,您可以:

{% if user.is_authenticated %}
    <p>The first name: {{user.first_name}}</p>
{% endif %}
© www.soinside.com 2019 - 2024. All rights reserved.