zoukankan      html  css  js  c++  java
  • django学习记录

    ---转载请注明出处---

    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>
     
  • 相关阅读:
    Linux下c++使用pthread库
    一半,一绊
    【codevs3945】 完美拓印
    【poj2942】 Knights of the Round Table
    【bzoj2730】 HNOI2012—矿场搭建
    【poj1177】 Picture
    Tarjan学习笔记
    联赛总结
    【poj3461】 Oulipo
    【csuoj1014】 西湖三人行
  • 原文地址:https://www.cnblogs.com/mzpy1119/p/5484506.html
Copyright © 2011-2022 走看看