Open stacklens opened 4 years ago
旧评论区读者问题集中帖:
Q:请问博主,我在注册微博第三方登陆的时候,提示你的应用“xxx网站”申请驳回 驳回理由:微博登陆按钮无法正常使用,请修复后再提交审核,微博登入功能接入地址:https://open.weibo.com/wiki/Connect/login, 请问微博注册的流程是啥啊,还有那个取消回调地址怎么填呢?
A:这些都是微博定的规矩,我真记不太清楚了。
我自己也是跟着一些博客文章弄的,您试着搜索一下,应该有很多可参考的文章。
大概就是需要在新浪开放平台注册,按着微博给的文档往下走。
取消授权回调我是没有填的,可以正常工作。
T:在header.html中有如下这句,请问这个user是默认在模板中就可以使用的对象么?好像view中没有传递它过来呢?都有哪些是在html中可以直接使用的对象呢,我打印request中出现的对象是不是就代表可以在html模板中直接使用?谢谢博主
{% if user.is_authenticated %}
在网上找到答案了,一个是user,一个是perms。是默认就有的。
在模版代码中,有两个属性,是Django给你提供好的,一个是user,一个是perms。
比方说我们可以这样判断一个用户是否是登陆用户,进而作出不同的显示:
{% if user.is_authenticated %}
<p>Welcome, {{ user.username }}. Thanks for logging in.</p>
{% else %}
<p>Welcome, new user. Please log in.</p>
{% endif %}
user变量是一个User或者AnoymousUser对象。
perms变量是一个django.contrib.auth.context_processors.PermWrapper对象,对当前用户的User.has_module_perms和User.has_perm进行了封装。这个包装器让你使用perm起来非常的方便。比如,我们需要判断当前用户是否拥有school应用下的所有权限,则使用 {{perms.school}}
我们如果判断当前用户是否拥有school应用下发表讨论的权限,则使用{{perms.school.publish_discussion}}
到这里,用户能登陆和登出了,但是好像并没有什么权限控制,不登陆的用户依然可以删除文章,写文章,对文章进行修改吗?
如果已登录的账户进入登陆页面,怎么让他自动跳转到别的地方
如果已登录的账户进入登陆页面,怎么让他自动跳转到别的地方
对应视图里判断一下用户的登录状态就可以了。
在django3中登陆后下,用户名下拉框无法显示。不知道是哪里错了。😂
如果下拉框不好用的话,可以尝试把那部分代码更改成下面的形式:
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDarkDropdownMenuLink" role="button"
data-bs-toggle="dropdown" aria-expanded="false">
{{ user.username }}
</a>
<ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDarkDropdownMenuLink">
<li><a class="dropdown-item" href="{% url "userprofile:logout" %}">退出登录</a></li>
</ul>
</li>
楼上的方法非常好用
我使用django3, 同样遇到了下拉用户名无法显示的bug,有谁解决了吗?
回复楼上的问题:
你去header.html
里面,将{{ user.name }}
修改为{{ user.username }}
,刷新下浏览器就好了。
user 对象,是在用户登录的视图里面实列化了,如下代码片段可知
# userprofile\views.py
def user_login(request):
"""用户登录"""
...skip...
user = authenticate(username=data['username'], password=data['password'])
if user:
# 将用户数据保存在 session 中,实现了登录动作
login(request, user)
...skip...
当 user 对象在 header.html 模板中渲染时,用户名应该是 user.username
,作者的教程里前端模板里误写成了 user.name
;
不好意思,是提问者 @wangzhuooooo 写错了
下拉框无法使用我把jquery通过cdn引入后正常了。
到这里可否展示一下目录树?
Bootstrap 5 里将 data-toggle
属性改成了 data-bs-toggle
,这边修改好就可以解决下拉框不显示的问题
https://www.dusaiphoto.com/article/31/