您的位置:首页 > 编程语言 > Go语言

django学习记录

2016-05-12 09:44 591 查看
---转载请注明出处---

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.py

2 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 %}

<form method="POST" action="/post-url/">
{% csrf_token %}
<input name='xxx' value="xxxx">
</form>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: