Django架构说明
admin
2023-07-05 12:44:04
0

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

本文介绍了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架构说明







相关内容

热门资讯

我国科学家为细胞信号“导航”开... 新华社济南5月31日电(记者张力元)人体细胞犹如一座精密的通信城市,每天都有大量“指令”穿梭传递,调...
极端大风突袭哈尔滨!过山车停摆... 极目新闻记者 詹钘5月31日,受强对流天气影响,哈尔滨国际会展中心体育场相关设施受到损坏,原计划当晚...
三原电缆取得电缆接头连接用防护... 国家知识产权局信息显示,上海三原电缆附件有限公司取得一项名为“一种电缆接头连接用防护结构”的专利,授...
原创 识... 还是那句话,机圈苦大屏久已…… 虽然大屏有大屏的美,但是小屏也有小屏的俏。在大屏旗舰占据主流的手机市...
玄戒技术取得分频电路专利,实现... 国家知识产权局信息显示,北京玄戒技术有限公司取得一项名为“分频电路、分频器、射频芯片和电子设备”的专...
为什么今年香会基调明显变了 5月29日—31日在新加坡举行的第23届香格里拉对话会(简称“香会”),见证着元首引领下大国关系继续...
成本几毛钱、假驱蚊液香精兑水,... 入夏升温,蚊虫进入活跃期,驱蚊防护成为民生刚需,《财经调查》持续接到消费者投诉,他们买到的多款网红驱...
越来越多80后90后,正在丧失... 六一儿童节到来之际,朋友圈里开始出现一种熟悉的热闹。有人晒出零食礼包,有人半开玩笑地向伴侣讨礼物,还...
洋保电子取得用于低温环境的电气... 国家知识产权局信息显示,洋保电子(太仓)有限公司取得一项名为“一种用于低温环境的电气柜”的专利,授权...
中日韩飞手争霸宁波!2026无... 潮新闻客户端 记者 陈冲 通讯员 朱凝 5月31日,2026小遛·无人机竞速世界杯(中国·宁波鄞州站...