Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django-从用户名获取用户id_Django - Fatal编程技术网

Django-从用户名获取用户id

Django-从用户名获取用户id,django,Django,我想在个人资料页面上获得用户帖子。 我目前的代码是: # views.py def show_blog(request, username): # If username exists if User.objects.filter(username = username).exists(): # Get user data and rendert the page user_data = {'user': User.objects.get(username = username

我想在个人资料页面上获得用户帖子。 我目前的代码是:

# views.py

def show_blog(request, username):
# If username exists
if User.objects.filter(username = username).exists():
    # Get user data and rendert the page
    user_data = {'user': User.objects.get(username = username)}
    user_posts = {'posts': Post.objects.filter(author = user_data.id)}
    return render(request, "blogs/show_blog.html", user_data)

return HttpResponse(404)


# show_blog.html - later, I'll make it show user posts
<h1>@{{ user }}</h1>
<p>{{ user.first_name }} {{ user.last_name }}</p>
当我去:

/blogs/testuser

您不能使用
user\u data.id
,因为
user\u data
是一个包含
'user'
键的字典,而不是
user
对象本身

您可以使用
user
代替:

from django.shortcuts import get_object_or_404

def show_blog(request, username):
    user = get_object_or_404(User, username=username)
    context = {
        'user': user,
        'posts': Post.objects.filter(author=user)
    }
    return render(request, 'blogs/show_blog.html', context)
从django.shortcuts导入get\u object\u或\u 404
def show_博客(请求、用户名):
用户=获取对象或404(用户,用户名=用户名)
上下文={
“用户”:用户,
“posts”:Post.objects.filter(author=user)
}
返回渲染(请求'blogs/show_blog.html',上下文)
您可以通过迭代来呈现帖子:

{% for post in posts %}
    {{ post }}
{% endfor %}
{%for posts in posts%}
{{post}}
{%endfor%}

注意:使用, 然后直接使用。如果对象不存在, 例如,由于用户自己更改了URL,
get\u object\u或_404(…)
将返回HTTP 404 Not Found响应,而使用
.get(…)
将导致HTTP 500服务器错误


您不能使用
user\u data.id
,因为
user\u data
是一个包含
'user'
键的字典,而不是
user
对象本身

您可以使用
user
代替:

from django.shortcuts import get_object_or_404

def show_blog(request, username):
    user = get_object_or_404(User, username=username)
    context = {
        'user': user,
        'posts': Post.objects.filter(author=user)
    }
    return render(request, 'blogs/show_blog.html', context)
从django.shortcuts导入get\u object\u或\u 404
def show_博客(请求、用户名):
用户=获取对象或404(用户,用户名=用户名)
上下文={
“用户”:用户,
“posts”:Post.objects.filter(author=user)
}
返回渲染(请求'blogs/show_blog.html',上下文)
您可以通过迭代来呈现帖子:

{% for post in posts %}
    {{ post }}
{% endfor %}
{%for posts in posts%}
{{post}}
{%endfor%}

注意:使用, 然后直接使用。如果对象不存在, 例如,由于用户自己更改了URL,
get\u object\u或_404(…)
将返回HTTP 404 Not Found响应,而使用
.get(…)
将导致HTTP 500服务器错误


您正在尝试使用字典作为查询集。字典项只是键值对

user = User.objects.get(username = username)
posts =  Post.objects.filter(author = user.id)
context = {'user':user,'user_posts':posts}
return render(request, "blogs/show_blog.html", context)
现在您可以在模板中执行此操作

<h1>{{user.username}}</h1>
<p>{{ user.first_name }} {{ user.last_name }}</p>
<p>{{ user_posts.title }}</p>
{{user.username}
{{user.first_name}{{user.last_name}}

{{user_posts.title}


您正试图使用字典作为查询集。字典项只是键值对

user = User.objects.get(username = username)
posts =  Post.objects.filter(author = user.id)
context = {'user':user,'user_posts':posts}
return render(request, "blogs/show_blog.html", context)
现在您可以在模板中执行此操作

<h1>{{user.username}}</h1>
<p>{{ user.first_name }} {{ user.last_name }}</p>
<p>{{ user_posts.title }}</p>
{{user.username}
{{user.first_name}{{user.last_name}}

{{user_posts.title}


谢谢!我不知道。get可能导致错误500。谢谢!不知道。get可能导致错误500。尝试用
用户数据['user']替换
用户数据.id
。id
。尝试用
用户数据['user']替换
用户数据.id
。id