django项目配置
1.django的sttings配置
1)注解MIDDLEWARE 内的一个路径
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware',# 如果这个不注解的话,前端使用form表单和ajax传输数据时要添加csrf_token,为了方便传输数据测试时可以注解,实际开发不用注解, 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
2)建立项目后往sttings.py文件内结尾添加
STATICFILES_DIRS=( os.path.join(BASE_DIR,'static'), )
添加好后可以在项目内建立static模块,用来存放前端css,js等文件
3)sttings.py配置数据库
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'books', ## 数据库名称 'USER': 'root', 'PASSWORD': '123', ## 安装 mysql 数据库时,输入的 root 用户的密码 'HOST': '127.0.0.1', } }
4)指定后台数据库,是在当前目录下的 __init__.py文件中添加
import pymysql pymysql.install_as_MySQLdb()
5)Terminal创建app
python manage.py startapp 自定义app名称
创建app的目录结构 admin.py : 写和django-admin相关的配置 apps: 对app的配置 models: 数据表模型 (********) tests: 测试 views: 视图函数 (*******)
6)sttings.py注册app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'app02',自己注册的 'app03',自己注册的
]
7)路由分组
urls.py
url(r'^app02/', include('app02.urls')), url(r'^app03/', include('app03.urls')),
app下的路由
from app02.views import * url(r'^index/', index)), url(r'^login/', login)),
这样设置后访问路径是:127.0.0.1:8000/app02/index
8)models.py创建表
class jurisdiction(models.Model): jname=models.CharField(max_length=20,null=True) path=models.CharField(max_length=100,null=True) jur_id=models.IntegerField()
9)在pycharm内的django项目下的Terminal框内输入命令
python manage.py makemigrations python manage.py migrate #如果只输入这个命令的话,只会导入初始的auth相关的数据库,不会导入自己建立的数据库
10)sttings.py设置session的几种方式
1. SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认) SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认) SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径(默认) SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认) SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认) SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认) SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认) SESSION_SAVE_EVERY_REQUEST = False # 是
2. SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎 SESSION_CACHE_ALIAS = 'default' # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置 SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串 SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径 SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名 SESSION_COOKIE_SECURE = False # 是否Https传输cookie SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输 SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期 SESSION_SAVE_EVERY_REQUEST = False #
3. SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎 SESSION_FILE_PATH = None # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() # 如:/var/folders/d3/j9tj0gz93dg06bmwxmhh6_xm0000gn/T SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串 SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径 SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名 SESSION_COOKIE_SECURE = False # 是否Https传输cookie SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输 SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期 SESSION_SAVE_EVERY_REQUEST = False
4. 配置 settings.py SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'
sttings.py
# 在settiongs中指定auth模块的方式 AUTH_USER_MODEL="app.userinfo" "app.userinfo":指向继承AbstractUser类的userinfo类
models示例:
class userinfo(AbstractUser): phone = models.CharField(max_length=11, null=None, blank=True) # 用户图片 avatar = models.FileField(upload_to='avatar/', default='avatar/default.jpg') # 用户创建时间 create_time = models.DateField(auto_now_add=True) # 关联站点 blog = models.OneToOneField(to='Blog', null=True)