这次做了一个比上次简单博客功能较全的学习笔记:
1、可创建用户账户进行添加、删除主题,增添、编辑、删除条目;
2、让用户拥有自己的数据,对用户的访问进行限制;每个用户拥有自己的主题,不让其他人查看;
3、添加Django-bootstrap为其着色
因为此“学习笔记”各个功能关联较多,在这里就不一 一 说明操作,用初步的模式展现页面,然后讲一些,在此过程中遇到的一些小知识,都是到处碰壁碰出来的。
(一)页面展示
所有主题列表 主题的条目 登录界面 注册界面
(二)小知识
1、某些页面,只允许已登录的用户访问,使用@login_required限制访问
Django提供了装饰器@login_required,让我们能够轻松地实现这样的目标。装饰器是放在函数定义前面的命令,python在函数运行前,根据它来修改函数代码的行为。
2、将数据关联到用户
只需要将最高层的数据关联到用户,这样更低层的数据将自动关联到用户。例如,在项目“学习笔记”中,应用程序的最高层数据是主题,而所有条目都与特定主题相关联。只要每个主题都归属于特定用户,我们就能确定数据库中每个条目的所有者
那么问题来了。。。。。。
我们的模型Topic与用户的User是独立的,要使用一个外键进行关联。在这里我们是使用Django自带的模型User :from django.contrib.auth.models import User,里面有user属性 ,so,问题解决。
修改模型Topic——models.py
class Topic(models.Model):
......
......
owner = models.ForeignKey(User) 建立到模型User外键关系
然后,一定要记住进行数据库迁移,可用Django进行检验
3、只允许用户访问自己的主题
现在刚刚设置的外键起作用了,在views.py中进行判断
def topics(request):
.....
topics = Topic.objects.filter(owner = request.user).order_by('date_added')
单个主题的保护
def topic(request):
.......
if topic.owner != request.user:
raise Http404
4、项目继承应用程序django-bootstrap
安装步骤:
a、命令行中输入pip install django-bootstrap3,在F:\PYthon\bianjiqi\Lib\site-packages(因为每个人的安装目录不同,但是对应的文件夹是对的~)中查看是否有下面两个文件夹,有则安装成功
b、settings.py
在INSTALLED_APPS中添加如下代码,在项目中包含应用程序django-bootstrap3
INSTALLED_APPS = {
.......
......
# 第三方应用程序
'bootstrap3'
}
在末尾添加如下代码:
STATIC_URL = '/static/bootstrap/' #静态文件的路径
# LOGIN_URL = '/users/login/'
STATICFILES_DIRS = (
# STATICFILES_DIRS 告诉Django,首先到STATICFILES_DIRS 里面寻找静态文件,
#其次再到各个app的static文件夹中寻找,有个弊端就是查找到第一个就停止
os.path.join(BASE_DIR, 'static'),
)
BOOTSTRAPS = {
'include_jquery': True,
}
网友评论