digango是基于python构建的标准web应用程序框架
框架可以帮我们完成一些页面、数据库连接、url映射、缓存、模板
1 安装 下载地址:https://www.djangoproject.com/download/
升级pip: cmd.exe :python -m pip install --upgrade pip
pip install django
测试:>>> import django
>>> django.VERSION
(2, 2, 7, 'final', 0)
2 MVC架构:即模型-视图-控制器 model-view-controller架构
模型--页面内显示的实际数据或内容,可以存储在数据库、xml节点或其他地方。
视图--web页面,可以是html/xhtml或其他标记语言。
控制器--代码部分,负责将数据从模型 数据库、xml 中收集起来并传递给视图 web页面。
MTV架构:即 模型-模板-视图 model-template-view
3 配置
4 建立项目
在django中,项目指的是一个django实例的设置,由django、特定于应用程序的设置和数据库选项组成。
首先 创建一个新目录。为此 切换到django-admin.py文件所在的目录,通常这个文件都在site-packagesdjangoin目录下。cd c:pythonlibsite-packagedjangoin
下一步 ,运行django-admin.py文件,让这个脚本创建一个新的目录,项目和代码都将存放在这个目录内。
django-admin.py startproject testnewsite
testnewsite 是项目的名称 可以更改
startproject 是一个命令,不公创建了新的目录,还在目录中存储4个重要的文件:
__init__.py 这个空文件使得创建的目录成为了一个包。
manage.py 这是与Django项目交互的命令行实用工具。
settings.py 这个文件存储项目的设置和通用配置。包括:django模块应用配置,数据库配置,模板配置
urls.py 这是存储当前Django项目的所有URL的文件
wsgi.py 一个wsgi兼容的web服务器的入口,以便运行你的项目。
=======================================================
创建应用
E:pythonscriptpydjguest >manage.py startapp sign #创建sign项目
mingrations/:用于记录models 中数据的变更
admin.py:映射models中的数据到django自带的admin后台
apps.py:在新的django版本中新增,用于应用程序的配置
mdels.py:创建应用程序数据表模型(对应数据库的相关操作)
tests.py:创建django测试
views.py:控制向前端显示哪些数据。
==============================================================
4 建立开发服务器:django提供了web容器,只需要通过runserver命令就可以把项目运行起来
通过开发服务器可以测试web站点,观察开发进度
切换到testnewsite目录:cd D:Program FilesPythonPython37Libsite-packagesdjangoin estnewsite
运行manage.py脚本,为其提供runserver命令。
manage.py runserver 也可以在启动时指定IP地址和端口号 manage.py runnserver 127.0.0.1:8001
开发服务器建立完成,并且在本地运行。可以在浏览器地址栏里输入http://127.0.0.1:8000/观察运行结果。
只能在自己的计算机上运行,其他计算机不可以访问。
5 创建视图(html xhtml 页面)
新建.py文件 myfirstview到testnewsite目录下:
from django.http import HttpResponse
def sometext(request):
mypage="<html><body><h1>welcome to my site</h1></body></html>"
return HttpResponse(mypage)
为了保持一致,应该使用带 view 的名称 命名视图文件,导入django.http模块及类 HttpResponse,视图函数接受参数request,这个参数必须是每个视图函数的第一个参数。
接着 绑定url与视图函数,打开urls.py文件,删除原来代码。
from django.conf.urls import url
from . import myfirstview
urlpatterns=[url('^sometext$',myfirstview.sometext), #这里告诉django,看到/sometext这个url时,应该使用myfirstview模块中的sometext视图函数。
]
在保存url时在cmd中会显示文件是否正确
访问:http://127.0.0.1:8000/sometext 显示空白页面
6 使用模板
模板的作用是保证全站的一致性,和html文档类似,模板由很多不同的标签和过滤器组成,这些过滤器和标签控制页面的外观,而不管其中到底显示什么数据。
运行cmd 切换到 cd D:Program FilesPythonPython37Libsite-packagesdjangoin estnewsite estnewsite
manage.py shell 这个命令打开了一个交互式解释器,它可以自动设置好Django设置文件。
导入模板系统:from django import template
创建一个模板对象:btitle=template.Template('your book is titled {{book}}.')
向模板对象提供上下文:a=template.Context({'book':'American Gods'})
在模板对象内有一个方法为render(),这个方法计算合适的上下文内的每一个变量和模板标签,以字符串的方式返回已渲染的模板。
print(btitle.render(a))
实践:
from django.template import Template,Context
>>>myfirstTemplate="""<h1>welcome to {{owner}}'s Library</h1>
<p>Below you will find a list of {{owner}}'s favorite books </p>
<br/>
<h3>book title:{{books}} author:{{author}}</h3>"""
>>> a=Template(myfirstTemplate)
>>>b=Context({'owner':'James payne','books':'American gods','author':'neil gaimen'})
>>>print(a.render(b))
使用模板和视图
首先 创建模板:创建一个新文件夹,命名:templates
新建一个文本文件 myfirsttemplate.html:
<h1>welcome to {{owner}}'s library</h1><p>below you will find a list of {{owner}}'s favorite books</p>
<br/>
<h3>book title:{{books}} author:{{author}}</h3>
创建一个新的视图 myfirstview.py
from django.shortcuts import render_to_response
from django.shortcuts import render
def sometext(request):
#context={}
#context['owner']='hello w'
#return render(request,'myfirsttemplate.html',context)
return render_to_response('myfirsttemplate.html',{'owner':'james payne',
'books':'american gods',
'author':'neil gaimen'})
render_to_response 可以创建模板对象、填充上下文,并进行渲染。
修改settings.py:'DIRS': [r'E:pythonscript emplates',], 一定要加上 r 否则提示oserror 路径不正确
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [r'E:pythonscript emplates',],
'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',
],
},
},
]
开启服务器:manage.py runserver
浏览器中:http://127.0.0.1/sometext
7 模型:描述了数据库中存储的数据
配置数据库设置:使用IDLE打开 setting.py 文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', #使用的数据库引擎(sqlite3不需要下载引擎,其他数据库要下载引擎)
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),#要使用的数据库的名称 sqlite3需要输入路径,其他数据库只要名称
}
}
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase',
'USER': 'mydatabaseuser', #访问数据使用的用户名
'PASSWORD': 'mypassword',#密码
'HOST': '127.0.0.1',#主机,连接数据时连接哪一台主机,如果是sqlite3留空。
'PORT': '5432',
}
}
引擎可以是:
'django.db.backends.postgresql'
'django.db.backends.mysql'
'django.db.backends.sqlite3'
'django.db.backends.oracle'
Name :如果是sqlite3 需要完整路径: C:/homes/user/mysite/sqlite3.db,其他数据库:只需要数据库文件的名称即可
测试数据库连接:manage.py shell
from dgango.db import connection
cursor=connection.cursor()
8 创建一个应用程序
应用程序 或称为django app是一个python包,包中包含了模型、视图以及其他各种代码。django项目可以包含一个或多个应用程序,以及应用程序的设置。
唯一确实需要创建应用程序的情形是使用模型或创建数据库驱动的站点的时候。
在 项目testnewsite文件夹下执行命令:manage.py startapp employees
Django 自动创建了空的模型和视图文件。
在models.py 文件修改代码为:
from django.db import models
# Create your models here.
class Employer(models.Model):
name=models.CharField(max_length=50)
website=models.URLField()
industry=models.CharField(max_length=50)
class Employee(models.Model):
first_name=models.CharField(max_length=50)
last_name=models.CharField(max_length=50)
address=models.CharField(max_length=50)
hire_date=models.DateField()
email=models.EmailField()
employee类继承于models类,相当于数据库中的一个表,定义了字段的名称、类型、长度
使用模型 :安装
为了创建数据表,需要首先安装 ,回到testnewsite目录,打开settings.py文件。找到installed_apps部分,
添加:'testnewsite.employees',
修改middleware删除默认类
INSTALLED_APPS = [
#'django.contrib.admin',
#'django.contrib.auth',
#'django.contrib.contenttypes',
#'django.contrib.sessions',
#'django.contrib.messages',
#'django.contrib.staticfiles',
'employees',
]
MIDDLEWARE = [
#'django.middleware.security.SecurityMiddleware',
#'django.contrib.sessions.middleware.SessionMiddleware',
#'django.middleware.common.CommonMiddleware',
#'django.middleware.csrf.CsrfViewMiddleware',
#'django.contrib.auth.middleware.AuthenticationMiddleware',
#'django.contrib.messages.middleware.MessageMiddleware',
#'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
验证模型 manage.py check 消息显示0个错误
生成数据库文件使用命令:manage.py makemigration 生成日志文件
manage.py migrate更亲数据库
小结
Django可以迅速创建强大的交互式web站点,驱动数据库
MVC MTV架构是很多框架的构建基础。
Django 是一个在线出版行业的强大工具,也适用于几乎每一类web应用程序
Django的运行架构为MVC ,即模型-视图-控制器架构。也被认为是MTV架构,即模型-模板-视图架构
模型是页面中显示的实际数据或内容,存储在数据库、xml节点或其他地方。
视图是web页面,可以是html、xhtml或其他标记语言。
控制器是一部分代码,这些代码从模型中收集数据 数据库,并将数据传递给视图 web页面
Django的设置在settings.py文件中进行配置,可以定义使用的数据库和应用程序等许多 内容
应用程序 django app是python包,其中包含了模型、视图以及各种其他代码。应用程序和django项目不同,django项目可以包含一个或多个应用程序,以及那些应用程序的设置。
例题1
使用mysql 数据库 要先安装 mysqlclient :cmd.exe 运行 pip install mysqlclient
DATABASES = {
'default': {
#'ENGINE': 'django.db.backends.sqlite3',
#'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
'ENGINE':'django.db.backends.mysql',
'NAME':'testwin',
'USER':'root',
'PASSWORD':'123',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}
例题3
Templates 文件夹下 建menulist.html
<ul>
<li>menu1:{{menu1}}</li>
<li>menu2:{{menu2}}</li>
<li>menu3:{{menu3}}</li>
<li>menu4:{{menu4}}</li>
<li>menu5:{{menu5}}</li>
<li>menu6:{{menu6}}</li>
</ul>
在 testnewsite包下添加menulistview.py
from django.shortcuts import render_to_response
from django.shortcuts import render
def MenuList(request):
#context={}
#context['owner']='hello w'
#return render(request,'myfirsttemplate.html',context)
return render_to_response('menulist.html',{'menu1':'one menu',
'menu2':'menu two',
'menu3':'menu three'})
修改url.py
from django.conf.urls import url
from . import myfirstview
from . import menulistview
urlpatterns=[url('^sometext$',myfirstview.sometext),
url('^MenuList$',menulistview.MenuList),
]
启动服务器:manage.py runserver
浏览器打开:127.0.0.1/MenuList
例题四:
创建模型:manage.py startapp menus
打开menus文件夹下的models.py文件添加类
from django.db import models
# Create your models here.
class MenuListData(models.Model):
name=models.CharField(max_length=20)
memo=models.CharField(max_length=50)
修改settings.py添加包名称menus
INSTALLED_APPS = [
'employees',
'menus'
]
执行命令:manage.py makemigrations
manage.py migrate