---转载请注明出处---
Django 是由 Python 开发的一个免费的开源网站框架,可以用于快速搭建高性能,优雅的网站!
django由以下部分组成:
urls.py 网址入口,关联到对应的views.py中的一个函数(或者generic类),访问网址就对应一个函数。
views.py 处理用户发出的请求,从urls.py中对应过来, 通过渲染templates中的网页可以将显示内容,比如登陆后的用户名,用户请求的数据,输出到网页。
models.py 与数据库操作相关,存入或读取数据时用到这个,当然用不到数据库的时候 你可以不使用。
forms.py 表单,用户在浏览器上输入数据提交,对数据的验证工作以及输入框的生成等工作,当然你也可以不使用。
templates 文件夹 views.py 中的函数渲染templates中的Html模板,得到动态内容的网页,当然可以用缓存来提高速度。
admin.py 后台,可以用很少量的代码就拥有一个强大的后台。
settings.py Django 的设置,配置文件,比如 DEBUG 的开关,静态文件的位置等。
配置环境:
centos 6.4 x64;python版本:3.5.1;django版本:1.9.6
###python3.5、django、pymysql等软件的安装省略###
一:新建项目
说明:DjangoProject/brucedjango代表我在当前DjangoProject目录下新建了一个名叫brucedjango的项目
二:新建app
指令:python manage.py startapp DjangoProject/bruceapp或者django-admin.py startapp DjangoProject/bruceapp
说明:当前DjangoProject目录下新建了一个名叫bruceapp
查看项目brucedjango的目录结构:
[root@localhost brucedjango]# ls
brucedjango manage.py[root@localhost brucedjango]# tree .├── brucedjango│ ├── __init__.py│ ├── __pycache__│ │ ├── __init__.cpython-35.pyc│ │ └── settings.cpython-35.pyc│ ├── settings.py│ ├── urls.py│ └── wsgi.py└── manage.py2 directories, 7 files
进入到项目 brucedjango的目录以后,启动服务器:#python manage.py runserver 0.0.0.0:8000
临时关闭防火墙,在浏览器中进行访问:http://localhost:8000
浏览器出现“It works”界面则代表启动成功。
三、数据库连接
默认数据库采用mysql,python3以后改用pymysql进行数据连接,需要单独安装pymysql。
数据库连接前,先进行数据库端的配置,新建好数据库。
然后在django端的修改 brucedjango/brucedjango/settings.py
修改成如下:
四、创建后台管理用户
执行数据库连接
python manage.py makemigrations
python manage.py migrate
Django 不主动提示创建管理员(Django 1.9不提示)用下面的命令创建一个帐号,因此需要执行以下代码来生产管理员账号:
python manage.py createsuperuser
根据提示来进行账户的设置即可。
后续可以本机浏览器输入:http://127.0.0.1:8000/admin 进行后台登录与管理。
五、创建属于自己的html主页
将创建的djangoapp添加到settings.INSTALLED_APPS里,如下图:
打开 djangoapp/views.py 写一个首页的视图
说明:添加test函数,即返回给用户的是一个test.html文件
在 djangoapp目录下新建一个 templates 文件夹,把我们自己写好的test.html文件存放在templates 文件夹里。
默认配置下,Django 的模板系统会自动找到app下面的templates文件夹中的模板文件。
修改testproject下的urls文件,修改成如下:
说明:即默认匹配所有的127.0.0.1:8000到test函数,就得到test.html文件
最后,本机浏览器输入:http://127.0.0.1:8000,即可得到你自己定义的test.html文件
tips:
问题一:django项目中,python2.7版本连接mysql用的MySQLdb模块。但是python3以后改用pymysql了,但是进行数据库连接的时候,还是提示没有MySQLdb。
解决方案:在新建的porject项目目录下,修改__init__.py文件,最终如下:
问题二:在配置完pymysql后需要执行python manage.py syncdb来同步数据库表,提示:unknown command :‘syscdb’
解决方案:在Django 1.9及未来的版本种使用migrate代替syscdb,即使用:python manage.py migrate
问题三:数据库某个表新增字段,然后重新同步数据时报错:
You are trying to add a non-nullable field ‘orderID‘ to ordermodel without a default; we can‘t do that (the database needs something to populate existing rows).Please select a fix: 1) Provide a one-off default now (will be set on all existing rows) 2) Quit, and let me add a default in models.py 解决方案:由于新增的一个字段在原本的数据库中是没有的,因此需要对原来不存在数据(新字段)设置一个默认值,我这里在models.py的新增字段里设置default=None,重新同步即可。
问题四:Django进行POST提交数据时报错(403报错,CSRF verification failed. Request aborted .)
解决方案(Django 中自带了 防止CSRF攻击的功能)二选一:
1、settings.py中,MIDDLEWARE_CLASSES项中注销django.middleware.csrf.CsrfViewMiddleware。
2、GET 请求不需要 CSRF 认证,POST 请求需要正确认证才能得到正确的返回结果。一般在POST表单中加入 {% csrf_token %}