【因自己电脑装了python2 和python3 所以后者用python3命令指代】
pip install django==1.9.7
目前最新版本: pip install Django==2.0.5
创建项目dj_project 目录下执行 django-admin startproject dj_project
mange.py: 命令行工具,可以让你在使用Django项目是以不同的方式进行交互。可以通过python manage.py查看
接下来通过 startapp 创建应用
python3 manage.py startapp dj
Django提供了web容器,只需要通过 runserver 即可吧项目运行起来
python3 manage.py runserver
结果如下
默认端口8000,也可以指定IP和端口
python3 manage.py runserver 127.0.0.1:8001
期间添加模板的时候报了一个错django.template.exceptions.TemplateDoesNotExist: index.html,通过修改
settings.py文件修复。
“跨站请求伪造”(CSRF)漏洞。Django针对CSRF的保护措施是在生成的每个表单中放置一个自动生成的令牌,通过这个令牌判断POST请求是否来自同一个网站
在form表单中添加{% csrf_token %}
在使用session存储信息时,一直报 'WSGIRequest' object has no attribute 错误。百度得知1.10版本之前使用MIDDLEWARE_CLASSES配置,1.10之后的使用MIDDLEWARE配置(猝不及防的坑)
Django自动生成数据库配置。settings.py文件中
# Database # https://docs.djangoproject.com/en/1.10/ref/settings/#databases DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
在执行migrate命令时,Django也帮我们生成了auth_user表,地址:http://127.0.0.1:8000/admin来访问Django自带的Admain管理后台
首先需要创建登录Admain后台的账号
登录: admin/admin1234
Add新增用户。添加用户之后,需要给用户分组,并授予权限才能登陆成功。
引用Django认证登录
username = auth.authenticate(username=user, password=passwd) #
if username is not None: auth.login(request, username) # 登录
限制访问:只能通过登录访问系统
当再次直接输入event_manage的url时,
404 Not found。并且跳转到/accounts/login/,限制需要让它跳转到登录页面
urls.py增加重定向:
url(r"^accounts/login/$",views.index),
在models.py添加表的信息
from django.db import models # Create your models here. # 发布会表 class Event(models.Model): name = models.CharField(max_length=100) # 发布会标题 limit = models.IntegerField() # 参加人数 status = models.BooleanField() # 状态 address = models.CharField(max_length=200) # 地址 start_time = models.DateTimeField('events time') # 发布会时间 create_time = models.DateTimeField(auto_now=True) # 创建时间(自动获取当前时间) def __str__(self): return self.name # 嘉宾表 class Guest(models.Model): event = models.ForeignKey(Event) # 关联发布会 id realname = models.CharField(max_length=64) # 姓名 phone = models.CharField(max_length=16) # 手机号 email = models.EmailField() # 邮箱 sign = models.BooleanField() # 签到状态 create_time = models.DateTimeField(auto_now=True) # 创建时间(自动获取当前时间) class Meta: unique_together = ('event', 'phone') def __str__(self): return self.realname
数据库迁移(没懂)
然后在admin.py中注册表
from django.contrib import admin from dj.models import Event, Guest # Register your models here. admin.site.register(Event) admin.site.register(Guest)
重新登录Admin后台管理平台
python3 manage.py shell命令安装shell,模拟数据库表的操作,包括插入数据,查看数据,删除数据,更新数据等操作
可视化的SQL管理工具
SQLiteManager:火狐搜索附加组件,安装,重启
另一种:SQLiteStudio 下载地址:http://sqlitestudio.pl/
Django用的数据库是Python自带的SQLite3,并不适用于大型的项目。支持其他数据库,如PostgreSQL、MySQL、Oracle的配置
配置步骤省略(因为我电脑之前装过一个mysql,所以导致冲突了,一台电脑可以装多个mysql,教程网上有,我实在没弄出来)
图形界面化管理工具: SQLyog