一、
(1)使用idea生成一个python项目,安装Django框架:
pip install django==1.8.2
(2)初始化项目:
django-admin startproject xxx //xxx为项目名称
(3)初始化应用:
python manage.py startapp xxx //xxx为应用名称
(4)在settings.py中注册刚生成的应用:
INSTALLED_APPS = ( 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'home', //这是我们刚生成的应用 )
(5)测试项目是否可以正常启动:
python manage.py runserver IP:端口
浏览器访问如下:
PS:Django默认使用的是sqlite3数据库,可以根据model生成数据库表,生成的文件在migrations目录下:
(1)我们先在model中写一个测试类:
from django.db import models # Create your models here. #学生类 class StuUser(models.Model): '''学生模型类''' #照片 studentName = models.CharField(max_length=255) studentNumber = models.CharField(max_length=255) picture = models.CharField(max_length=255) phoneNumber = models.CharField(max_length=255) address = models.CharField(max_length=255) createDate = models.DateTimeField() updateDate = models.DateTimeField()
(2)终端运行如下指令:
python manage.py makemigrations
运行后可以发现migrations目录下多了一个0001_initial.py文件,就是我们model的迁移文件:
# -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models, migrations class Migration(migrations.Migration): dependencies = [ ] operations = [ migrations.CreateModel( name='StuUser', fields=[ ('id', models.AutoField(verbose_name='ID', primary_key=True, serialize=False, auto_created=True)), ('studentName', models.CharField(max_length=255)), ('studentNumber', models.CharField(max_length=255)), ('picture', models.CharField(max_length=255)), ('phoneNumber', models.CharField(max_length=255)), ('address', models.CharField(max_length=255)), ('createDate', models.DateTimeField()), ('updateDate', models.DateTimeField()), ], ), ]
然后再运行如下指令:
python manage.py migrate
此时就会生成一个db.sqlite3文件,这是一个小型数据库,我们需要安装一个工具才能有可视化数据库界面,由于项目使用的是mysql数据库,后续需要更改对应数据库配置,此处不过多赘述
二、django整合mysql
(1)django完成视图搭建:(注意项目结构,我使用的idea生成的项目,需要删除一层,使项目结构如下:)
其中homework为项目,home是我们运行如下指令初始化的应用:(一定要注意)
python manage.py startapp home
首先,我们在settings.py配置文件的TEMPLATES->DIRS中添加如下代码:(指定模板路径)
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', ], }, }, ]
应用中新建对应路径的文件夹做为我们的view模板渲染层,进行前后端分离的项目就不需要这些操作了
home应用中的urls.py配置路由(默认生成的home应用没有urls.py,从项目homework中复制一份):
from django.conf.urls import url
from home import views
urlpatterns = [
url(r'^index$',views.index),#首页
]
home应用中的views.py文件中配置视图:
from django.shortcuts import render # Create your views here. def index(request): '''首页''' return render(request,'home/index.html')
项目的urls.py中引入应用的路由:
urlpatterns = [ url(r'^admin/', include(admin.site.urls)), url(r'^', include('home.urls')), ]
模板中新建index.html
index.html内容:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <h1>首页</h1> </body> </html>
然后运行
manage.py runserver 127.0.0.1:8080
这样一个路由就配置好了
PS:简单介绍以下Django路由的原理,如下图所示:()
自定义404页面:
settings.py修改如下配置:
DEBUG = False ALLOWED_HOSTS = ['127.0.0.1']
templates下新建404.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>首页</title> </head> <body> <h1>页面找不到</h1> </body> </html>
(2)配置mysql数据库(settings.py文件中修改数据库配置):
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'stu_user',//数据库名称 'USER': 'root', 'PASSWORD': 'root', 'HOST': 'localhost', 'PORT': '3306', } }
项目中新建model后,可以同步数据库表,具体指令如下:
python manage.py syncdb
views.py中测试新增数据:
from django.shortcuts import render from datetime import date from home import models # Create your views here. def index(request): '''首页''' book = models.StuUser( studentName = '冯文哲' ) book.save() return render(request,'home/index.html')