django基础(一)——创建项目、修改配置
---恢复内容开始---
前提:安装好django,在命令行中输入django-admin,检查是否已经安装好
一、创建Django工程
方法一:
1.建一个文件夹,如“demo”
2.命令行进入这个文件夹,执行命令:django-admin startproject dj_test 。这个命令可以在这个文件夹下创建一个django工程。执行后创建一个"dj_test"的目录。名字自己定义
dj_test中的Py文件:
setting.py:配置文件
urls.py:配置url
3.命令行:cd dj_test进入创建的django工程(dj_test),执行命令python manage.py runserver :启动服务:
4.服务启动后,访问127.0.0.1:8000。正常打开页面就是创建成功。
5.ctrl+c退出服务,命令行输入:Python manage.py startapp user 创建一个子系统。创建项目后必须创建一个app,user是自定义的名字。创建子系统后,工程中会生成一个db.sqlite的文件
方法二:使用pycharm创建:
1.打开pycharm,FILE——close project 在welcome to pycharm 界面,点create new project,选择Django项目,然后选择location目录(day18)、Python环境
2.more settings 中的Application name 就是创建APP(子系统)的名字,这里命名为"user",不写就不会创建一个app。
二:
结构解释:
1.manage.py:项目管理器,比如修改了数据库,就需要用到manage.py来操作
2.templates:放html文件的
3.项目文件中文件:
(1)settings.py:配置文件
(2)urls.py:配置url地址
(3)wsgi.py:开发完成后,部署到服务器时用到的文件
4.创建的子系统(user)中的文件:
(1)models.py:操作数据库,定义表结构
(2)views.py:写主要逻辑
5.migrations:中存放表结构
三、修改配置文件:
1.setting.py:
(1)LANGUAGE_CODE = 'en-us' 改为 LANGUAGE_CODE = 'zh-Hans' 。这里改的是语言,英文改为中文。代码在(108行)
(2)TIME_ZONE = 'UTC' 改为TIME_ZONE = 'Asia/Shanghai'。这里是修改时区,把标准时区改为上海。
(3)USE_TZ = True改为USE_TZ = False 。改这里是存到数据库后的时间 也是正确的,默认是True,默认存到数据库的时间是标准时区的时间。
修改后,运行工程(day18)或者在Terminal中输入python manage.py runserver ,访问127.0.0.1:8000页面变成中文
(4)78行
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } }
这个默认的数据库是sqlite的,sqlite是文件型数据库,也可以写sql语句。sqlite是一个本地的数据库。
如果需要改成mysql数据库,把default这个字典替换成以下代码,通过这个可以使用mysql数据库
'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎改为mysql 'NAME': 'jxz', # 数据库名称 'USER': 'jxz', # 用户 'PASSWORD': '123456', # 密码 'HOST': '118.24.3.40', # ip 'PORT': 3306, # 端口号 }
改成mysql运行项目会报错,解决办法:
在工程目录(day18)init.py文件下,加入代码。这个是把Pymysql 当做SQLdb来使用
import pymysql pymysql.install_as_MySQLdb()
如果运行时报了版本问题的错误,就降低django版本:
查看django 版本:命令行Python环境下执行
import django django.VERSION
如果django版本高于2.1,执行 pip install django==2.1,安装2.1版本的django。
在这里我们不用mysql 数据库,所以使用django默认的sqlite。所以先把改成mysql的default注释掉,换成原来的default。练习用默认的数据,部署时再改为mysql。
(5)第55行,TEMPLATES负责配置urls文件的路径在哪里,如果是通过命令创建的项目,这个列表中没有“ 'DIRS': [os.path.join(BASE_DIR, 'templates')]”这一行数据,用pycharm创建的项目是有这一行的
TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')]
#dirs配置目的时找HTML文件
#如果是通过命令创建的项目,这个列表中没有“ 'DIRS': [os.path.join(BASE_DIR, 'templates')]”这一行数据,用pycharm创建的项目是有这一行的 , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
(6)注释掉下面代码中注释的一行,如果不注释掉,在访问网址时,会出现403的问题
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', # 'django.middleware.csrf.CsrfViewMiddleware', #django的中间件,用于form表单。为了防止重复提交,如果做了前后端分离,重复提交的问题可以交给前端去限制, 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
---恢复内容结束---