- • 在写Header的时候,在网站的右上角会显示登录用户的名字
- • 首先需要在前端判断用户是否登录,Django自带了判断用户是否登录
{% if user.is_authenticated %}
{% endif %}
{{ user.username }}
- • 在这样看并没有什么问题,接下去写个人资料卡,在Django的Views里面写:
def profile_view(request, id):
user = User.object.get(id=id)
return render(request, 'userProfile.html', locals())
{{ user.username }}
{{ user.QQ }}
{{ user.Wechat }}
{{ user.email }}
......
- • 在登录用户点击资料卡按钮的时候,会触发这个方法,获取请求用户的id,接着在数据库里找到这个配对的id
- • User就是用户模型,user就是这条数据了,get是方法,还有filiter,create等
- • 取到这个数据后,然后跳转到userProfile这个html页面
- • locals()就是导出方法所有的变量,就是user
- • 这时问题就出来了,由于我在方法里面写了user变量,和Django系统自带的user重复了,因此,如果访问其他用户的空间,那么右上角的名字就会变成访问其他用户的名字了,就不是自己登录的名字了
- • 解决方法,顶部导航栏的user和用户个人资料卡的user都用其他变量,比如userProfile,userLogin等等
- • 虽然是个小问题,但是困惑了我好久,之前的芋圆社区1.0就因为怎么也看不出来哪里有问题而创了用户自己的资料卡和访问的资料卡,非常麻烦
- • Block的原理和User一样,在写进程代码的时候,用block作为阻塞进程的变量名
- • 结果前端就一直显示content而不是显示阻塞的进程
- • 编写变量名一定一定要规范!
- • 可以用驼峰法,第一个字母小写,后面的单词大写,如userProfile,happyTime,newYear
- • 也可以添加下划线,user_profile,happy_time
- • 尽可能避免一些系统的变量名,比如user,for,block,if等