Django架构说明

Django采用了MVT的软件设计模式,即模型M,业务代码V和模板T。

创新互联基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业服务器托管报价,主机托管价格性价比高,为金融证券行业雅安服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。

本文介绍了Django运行的基本配置。

一、构建简单的MVT模型(三个文件夹,存放三种不同类型的文件):

    1、目录:

            models:存放数据库模型目录

            template:存放模板文件目录

            views:存放控制代码目录

二、Django基本说明:

        1、安装:把python目录添加到系统的环境变量

pip install Django        //使用python的pip命令安装Django

            注意:

                    1)、安装的时候会提示报错,提示“timeout”,原因:下载地址速度太慢,换在国内地址

 pip install Django -i https://pypi.tuna.tsinghua.edu.cn/simple

                    **永久更换下载源地址:

                           -  linux下,新建/修改/.pip/pip.conf文件,添加下列内容

                    [global]                    
                    timeout = 300
                    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
                    [install]
                    trusted-host = tsinghua.edu.cn

                           - Windows下,在文件夹浏览窗口输入%USERPROFILE%,新建\pip\pip.ini,添加下列内容:

                                    [global]                                    
                                    timeout = 300
                                    index-url = https://pypi.tuna.tsinghua.edu.cn/simple
                                    [install]
                                    trusted-host=tsinghua.edu.cn

                   2)、安装时提示“No module named pip”

                        原因有二,1、没有安装pip,如果使用python.exe安装,把python主目录下的Scripts添加到环境变量

                                          2、Windows10下,右键使用管理员权限运行cmd

                    3)、pip下载下来的包直接存在python主目录下的Scripts下,而Scripts目录添加到了环境变量,所以安装后,可以使用django这个命令确认安装状态

      2、使用manager.py新建项目:把Django目录添加到系统环境变量

            新建项目时,Django自动创建项目的目录:

            -项目名:

                -manage.py:命令行管理工具,提供了与Django交互的接口。

                    常用命令,startapp name新建APP、makemagrations、migrate(Django的ORM)

                -项目包名:以项目包命名的容器,主要实现配置和和管理功能。

                    -__init__.py:代表python一个包,python2.0必须有,才能代表是一个包,python3可以没有

                    -settings.py:项目的配置文件,配置静态文件地址和

                    -urls.py:配置网站目录,指定网址转向哪个文件。

                    -wsgi.py:一个 WSGI 兼容的 Web 服务器的接口,以便运行你的项目。它定义了TCP连接、HTTP原始请求和响应格式。

django-admin.exe startproject mysite        //新建项目,名为mysite

        3、启动项目:启动后就可以使用web浏览器访问该网站

cd mysite               //进入mysite目录
python manage.py runserver 127.0.0.1:8000       //可以省略ip:port,默认本机ip和8000端口,也可指定ip:端口

        4、创建一个APP:

                APP:相当于整个网站的一个模块。比如:主站(index)\BBS\BLOG\Video\News等等,每一个都是一个独立的页面或功能。

python manage.py startapp blog            //新建一个名字是blog的APP

                新APP默认目录:

                -migrations包:修改数据表结构

                -__init__:代表APP是个包。。。

                -apps.py:配置当前App

                -models.py:ORM,写指定的类,通过命令可以创建数据库结构。

                -tests.py:单元测试

                -views.py:业务代码,存放后台处理的代码。

#配置urls.py指定网址访问的页面。APP要导入到views文件
import blog.views
#在urlpatterns列表添加下面值
url(r'^blog',blog.views.login),

        5、templates和static文件夹:新建项目后需要创建这两个文件夹。

            templates:存放.html类型的模板文件,在urls.py中可以更改设置

            static:存放静态文件,比如JS/jQuery/CSS类型的文件,在settings.py中设置才能正常被使用。

                        根据个人喜好设置,可以在每个APP下设置,也可在manage.py同级目录设定通用的static,

            以上两个文件夹创建后的设置:

#增加settings.py文件templates的设置:
TEMPLATES = ['DIRS': [os.path.join(BASE_DIR,'templates')]]   //修改dirs的值,指定为主目录下的templates文件夹

#增加settings.py的static目录的设置
STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)

        6、几个错误:

            1)、form请求错误,原因:form里的action带/,django里的urls地址路由没带/,只在django框架里的错误,

            解决方法,两处/都删掉或都加/

            2)、运行csrf错误,注释掉csrf行,以后会对csrf进行设置 

            3)、指定全局static目录后,无法加载CSS样式,提示Resource interpreted as Stylesheet but transferred with MIME type application/x-css

#html加载的CSS文件

#解决方法:在html首行加
{%load static%}
#如果不想每次在模版中加载静态文件都使用load加载static标签,那么可以在settings.py中的TEMPLATES/OPTIONS添加'builtins':['django.templatetags.static'],这样以后在模版中就可以直接使用static标签,而不用手动的load了。
'django.contrib.auth.middleware.AuthenticationMiddleware',

三、总结一个完整的HTTP请求过程:

        Django架构说明


文章标题:Django架构说明
文章地址:http://azwzsj.com/article/gdpsgo.html