官网网站:https://www.djangoproject.com/
官网文档:https://docs.djangoproject.com/en/1.11/
一、创建Django项目的基本流程
1.创建根项目
django-admin startproject 项目名称
2.cd到根项目下,创建子程序:
django-admin startapp 程序名称
3.修改配置文件,子项目注册根管理项目
settings.py->INSTALLED_APPS 添加子项目名称
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'album', # 相册
'article', # 文章
'author', # 作者
'authorsay',# 说说
'comment', # 评论
'message', # 留言板
'photo', # 图片
]
4.子路由注册
先在根项目下的urls.py 文件中添加子路由
from django.conf.urls import url, include
urlpatterns = [
url(r'^admin/', admin.site.urls),
# 注册子路由
url(r'^album/', include('album.urls')),
url(r'^article/', include('article.urls')),
url(r'^author/', include('author.urls')),
url(r'^authorsay/', include('authorsay.urls')),
url(r'^comment/', include('comment.urls')),
url(r'^message/', include('message.urls')),
url(r'^photo/', include('photo.urls')),
# 注册根网页路由
url(r'^$', views.index, name='index')
]
然后在每个子程序中添加子路由文件urls.py
# 留言板路由模块
from django.conf.urls import url
urlpatterns = [
]
5.创建根视图处理函数,创建根网页视图
新建根目录views.py
# 首页视图处理模块
from django.shortcuts import render
# 首页视图处理函数
def index(request):
return render(request, 'index.html')
新建根网页templates和静态文件static
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>博客首页</title>
</head>
<body>
<h4>欢迎来到高加林的博客网</h4>
</body>
</html>
6.在配置文件中配置根网页和静态文件
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['template'], # 增加首页视图
'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',
],
},
},
]
STATIC_URL = '/static/'
# 添加静态文件static
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
7.同时修改数据库连接和文体及默认时间(根目录下的settings.py)
# 导入mysql模型
import pymysql
pymysql.install_as_MySQLdb()
# 允许所有人访问
ALLOWED_HOSTS = ['*']
# 数据库连接
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': 'localhost', # 数据库ip
'PORT': '3306', # 端口
'NAME': 'myblog', # 数据库名称
'USER': 'root', # 连接用户
'PASSWORD': '123456' # 连接密码
# 'ENGINE': 'django.db.backends.sqlite3', # 默认sqlite3测试数据库
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# 定义为中文
LANGUAGE_CODE = 'zh-Hans'
# 定义时区为上海
TIME_ZONE = 'Asia/Shanghai'
8.运行程序:
python manage.py runserver (端口号) # 可以指定端口运行项目
生成指定数据库SQL脚本:
python manage.py makemigrations
自动执行SQL脚本到数据库
python manage.py migrate
项目基本结构
|-- myblog/ 项目主目录
|-- myblog/ 根管理项目
|-- __init__.py 包声明文件
|-- settings.py 项目配置信息
|-- urls.py 主路由模块
|-- wsgi.py 实现了wsgi协议的模块,项目部署时需要
|-- views.py 视图处理模块
|-- manage.py 项目命令行启动模块
|-- author/ 子程序模块
|-- __init__.py 包声明文件
|-- admin.py 后台管理系统注册模块
|-- apps.py 子项目名称定义文件
|-- models.py 数据模型定义模块
|--test.py 测试模块
|-- urls.py 子路由模块
|-- views.py 视图处理模块
|-- static 静态文件
|-- template 根网页文件
二、项目开发过程中问题总结
1.导入同父父级目录下的子子目录中的文件的models模型
|-|pet
--|animal
---|model.py
--|pet
---|views.py
在views.py中导入model.py文件的models模型
from animal import models
2.web开发中的视图处理函数views查询数据库中数据
# 查找返回所有数据
pet = models.Pet.objects.all()
# 根据id条件查询数据
pet = models.Pet.objects.get(pk=pet_id)
3.在HTML中的表格中展示查找到的数据
{% for animal in pet %}
<tr>
<td><a href="/animal/info/">{{animal.name}}</a></td>
<td>{{aniaml.id}}</td>
<td>{{}}</td>
<td>5</td>
<td>狗</td>
<td><a href="#">删除</a>|<a href="#">修改</a></td>
</tr>
{% endfor %}
三-1、使用Django连接mysql数据库
1.在mysql中创建数据库
打开mysql,使用命令行,创建数据库.
执行命令:create database 数据库名 charset=utf8;
2.在pycham中创建django项目
打开pycham,创建django项目[根管理项目].
执行命令:django-admin startproject 项目名
同时创建子项目[程序].
执行命令:django-admin stsrtapp 程序名
3.修改配置连接到指定数据库
首先,在根项目中的setting文件中INSTALLED_APPS模块添加子项目的名称
然后修改:项目名/myblog/settings.py-> DATABASES-> default
注意:django默认情况下,封装的是mysqldb模块连接mysql数据库
但是:在setting.py文件中,mysqldb不支持新版本mysql数据库以及新版本的python环境;一般情况下我们使用pymysql替代mysqldb完成和新版本python以及mysql数据库的交互!
三-2.定义数据模型
1.定义子项目中的数据模型模块
2.创建主路由和子路由模块
在项目中的urls文件中创建子项目路由,同时将子路由添加到主路中
三-3.同步数据库,执行CRUD操作(增删改查)
1.同步数据库
1.进入pycham中根目录的Terminal终端,执行测试命令.
执行命令:python manage.py shell
2.引入包中的模块
from user import models
3.创建程序中的临时对象.
user = models.User(username="老王",age=18,...)
4.保存对象到数据库:持久对象,在数据库和程序中都存在.
user.save()
2.进行CRUD操作
1.查询数据[]
2.修改数据[查询对象-修改数据-保存数据]
u = models.User.objects.filter(指定条件)
u.age = 18
u.save()
3.删除数据[查询对象-删除对象]
u = models.User.objects.get(username="小李")
u.delete()
注:在删除指定对象后,在数据库中无法找到,但是在程序中还是可以找到?
4.增加数据
u = models.User(username="徐楠 ",...)
u.save()
3.完成Q对象.F对象等操作
1.Q对象操作(& | ~ )
from django.db.models import Q
models.User.objects.filter(Q(条件1)&Q(条件2))
2.F对象操作
查找某个用户的添加时间和最后登录时间一样的用户
models.User.objects.all().filter(join_time=F("update_time"))
4.在shell中添加多个用户.多篇文章
在shell中给一个用户添加一篇文章
执行命令:
from user import models
u = models.User.objects
a = models.Article.objects
user = u.get(pk=2)
article = models.Article(title="",content="",user=user)
article.save()
5.将数据库的内容展现在网页上
1).在数据模型(models)中添加获取数据库数据的方法.
2).在展示界面文件(views)中添加将获取的数据展示在界面的方法.
3).在子路由文件(urls)中添加子路由的路径,保证路由能够从主路由指向子路由
四.自创二手苹果交易网站过程
1.打开mysql数据库,创建django需要的数据库(apple)
create database apple charset=utf8;
2.在pycham中创建apple根项目,执行命令
# 正常环境下
django-admin startproject apple
# python2和python3共存的环境下
python3 -m django startproject 项目名称
3.进入到apple项目中修改settings文件,其中包括两个方面
(1).导入pymysql模块代替MySQLdb模块;
# 导入pymysql模块,代替MySQLdb模块
import pymysql
pymysql.install_as_MySQLdb()
(2).修改DATABASES中的内容,连接mysql数据库
# 配置连接mysql数据库
DATABASES = {
'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
"ENGINE":"django.db.backends.mysql",
"NAME":"apple",
"USER":"root",
"PASSWORD":"root",
}
}
(3).修改字体和时间(可不修改)
# 修改字体
LANGUAGE_CODE = 'zh-Hans'
# 修改时区
TIME_ZONE = 'Asia/Shanghai'
4.创建子模块中内容
(1).在根项目中创建用户模块子项目,执行命令
# 正常环境中
django-admin startapp users
# python2和python3共存的环境
python3 -m django startapp 项目名称
(2).在用户模块添加urls.py文件,用于配置子模块路由
(3).新建models.py文件,创建模型
(4).生成指定数据库SQL语句
python manage.py makemigrations
(5).自动执行SQL脚本到数据库
python manage.py migrate
(6).运行项目
python manage.py runserver