3. 安装Django,初步讲解
3.1 安装Django:
pip install django==安装的版本
3.2 创建项目:
django-admin startproject 项目名
项目结构
pai0805/
├── manage.py
└── pai0805
├── __init__.py
├── settings.py
├── urls.py
└── wsgi.py
项目目录:
manage.py
:项目的真理的管理文件,通过他管理整个项目项目同名文件夹
:settings.py
:项目整体的配置文件夹url.py
:项目的URL配置文件wsgi.py
:项目与web服务器的入口__init__.py
:可添加数据库驱动
3.3 运行服务器
python manage.py runserver
不指定端口默认8000
python manage.py runserver 8080
3.4 成功的界面
3.5 创建模块
python manage.py startapp 模块名
pai0805
├── db.sqlite3
├── manage.py
├── pai0805
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-35.pyc
│ │ ├── settings.cpython-35.pyc
│ │ ├── urls.cpython-35.pyc
│ │ └── wsgi.cpython-35.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── user
├── admin.py
├── apps.py
├── __init__.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
user:
admin.py
:后台管理站点的配置app.py
:当前子应用的信息models.py
:保存书写的数据库模型test.py
:保存开发测试用例的,进行单元测试的views.py
:书写逻辑的,保存视图mirgrations
:存放数据库的迁移文件
3.6 注册子模块
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# 定义子应用
#'user'
'user.apps.UserConfig',
]
3.7 简单体验数据库交互
3.7.1 定义表与字段
一张表对应了一个类
在models.py
中添加类
class UserInfo(models.Model):
# 定义字符串类型
# 名字
name = models.CharField(max_length=10)
# 年龄
age = models.IntegerField()
# 电话号码
phone = models.CharField(max_length=11)
def __str__(self):
return self.name
注意:
- 类名对应的是表名
- 属性名对应的是字段名
- 继承于Model
3.7.2 迁移数据库表
-
生成迁移文件
python manage.py makemigrations
-
执行迁移文件
python manage.py migrate
迁移成功并且执行迁移之后,才真正在数据库生成表
3.7.3 数据库的配置
-
在
同名文件夹中
的setting.py
中DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql',# 数据引擎 'NAME': 'pai0805', # 数据库的名字 'USER': 'root', # mysql的用户名 'PASSWORD': 'mysql', # mysql的密码 'HOST': '127.0.0.1', # mysql的地址 'PORT': '3306', # mysql的端口 } }
-
在
同名文件夹中
的__init__.py
中添加驱动import pymysql pymysql.install_as_MySQLdb() # 添加驱动,django 的orm可以调用他
3.7.4 后台管理站点
python manage.py createsuperuser
输入:
- 用户名
- 密码
修改为中文界面
在 同名文件夹
中的 setting.py
设置
# LANGUAGE_CODE = 'en-us'
# 中文
LANGUAGE_CODE = 'zh-Hans'
# 时区
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
3.7.5 注册模型到后台管理
在admin.py
中
from user.models import UserInfo
# Register your models here.
# 注册你的模型
admin.site.register(UserInfo)
3.8实现网站的用户信息展示
3.8.1定义视图,处理业务
在view.py
中,创建视图
视图的作用:创建业务逻辑,完成路径–视图的匹配,返回给对应路径的数据或者网页
注意:视图函数只要需要一个参数来接收Django传递过来的参数
from django.http import HttpResponse
def index1(request):
print("#########")
print(type(request))
print(request)
return HttpResponse('hello world!')
# return 'hello world!'
3.8.2配置路由URL
在同名文件夹
的urls.py
中
-
第一种方法
from user import views urlpatterns = [ url(r'^index1$', views.index), ]
导入模版的包,将路径和包中的方法相关了
-
第二种方法(分模块再集中)
- 在项目所在的同名文件夹的urls里面配置includes()将各个模块的URL加载
- 在各个模块的URL里面进行配置URL----VIEWS
- 项目同名的urls值完成路由的分发匹配过程
真正配置路径在各个模块的URL下面
3.9 配置模版文件
3.9.1创建一个名字叫templates的文件夹
3.9.2 配置文件夹的查找路径
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
# 设置模板的查找路径
'DIRS': [os.path.join(BASE_DIR,'templates')],
'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',
],
},
},
]
3.9.3 返回模板到前端
在user/views.py
文件中
def index2(request):
# render(request, template_name, context=None, content_type=None, status=None, using=None):
return render(request,'index.html',{'text':'这是测试上下文'})
在templates/index.html
文件中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h1>hello world!!</h1>
{{ text }}
</body>
</html>