一,环境安装
django提供两种安装模式:
1.pip安装:pip install Django [==版本号]
2.源码安装:
官网下载源码:https://www.djangoproject.com/download/
对python支持如下:
安装:解压源码后,进入文件夹运行:python setup.py install
二,使用
1.创建项目
进入想将项目存放的文件夹中,进入cmd命令行模式,运行django-admin startproject myblog(注:myblog是项目名称,根据自己项目命名),django将自动生成项目结构如下:
项目结构详解:
manage.py:
与项目进行交互的命令行工具集的入口,项目管理器,执行python manage.py来查看所有命令。
其中有一个命令是:python manage.py runserver是运行django内置的web服务器,如下所示:
默认开启端口号为8000,若想更改,直接在启动命令后加端口号:python manage.py runserver 9000
myblog目录:项目的一个容器,包含项目最基本的一些配置,目录名称不建议修改。
wsgi.py: python服务器网关接口
urls.py:URL配置文件,Django项目中所有页面都需要我们自己去配置URL
settings.py:项目的总配置文件(很重要)
__init__.py:模块声明文件
2.创建应用
打开命令行,进入项目中manage.py同级目录,输入:python manage.py startapp blog(应用的名称)
添加应用名到settings.py中的INSTALLED_APPS中
应用目录结构:
migrations:数据移植模块,内容自动生成。
admin.py:该应用的后台管理系统配置(Django为每个应用都创建了后台管理)
apps.py:该应用的一些配置
models.py:数据模块,使用ORM框架
tests.py:自动化测试模块
views.py:执行响应的代码所在模块
3.Template开发
3.1URL配置
前面介绍过,项目应用URL的配置我们可以在项目的urls.py中配置,但当我们的项目过大后,该文件的管理将成为负担,所以,在实际使用中,我们需要将URL按照应用分开配置。
在项目的urls.py中进行如下配置:(以blog应用为例)
然后在我们的blog应用中添加urls.py文件。
在urls.py文件中:
注意:1.项目的urls.py文件和应用中的urls.py文件配置路径是层级关系,所以,以上的配置我们需要按照http://localhost:8000/index/index才能访问到。
2.路径中使用正则时,需要注意在配置字符后加‘/’,否则不能映射。
3.2 HTML模板引擎
Django内置了模板引擎,如需修改可以在项目的settings.py中修改。
创建步骤:
1.在应用的根目录下创建名叫Templates的目录
2.在该目录下创建HTML文件
3.在views.py中返回render()
4.传递数据:
render()函数中支持一个dict类型的参数传值。(更多类型请查看官网)
view.py中传值:
html中接值:
注意:这种目录方式在多应用中会造成html文件名冲突的问题,解决方案是在Templates目录中创建和应用名同名的文件夹,将所有的html文件放入该wenjianji文件夹内。
4.Models
步骤:
1.创建类,继承models.Model,该类即是一张数据表,创建字段。
2.命令行进入manage.py同级目录
执行python manage.py makemingrations [blog(应用名)]
再执行python manage.py migrate
3.Django会自动在blog/migrations/目录下生成移植文件
4.执行python manage.py sqlmigrate blog 文件id 查看SQL语句
5.传值
6.接值:
5.Admin
admin是Django自带的一个功能强大的自动化数据管理界面。
配置Admin
创建用户:python manage.py createsuperuser
Admin入口:localhost:8000/admin/
修改页面为中文:修改settings.py中LANGUAGE_CODE='zh_Hans'
配置应用:
在应用下admin.py中引入models模块(或里面的模块类)
编辑admin.py:aadmin.site.register(model.Article)
然后再进入页面就可以进行数据的操作了。
修改数据默认显示名称:
在Article类下添加一个方法
根据python版本选择__str__(self)或__unicode_(self):
return self.title