Django学习笔记--自用

入门

首先,在cmd中,进入到项目的目标文件夹myblog,然后

django-admin startproject myblog

这句话在目标文件夹建立Django项目。这个时候,这个myblog项目虽然啥也没写但是已经可以跑起来了,Django自带一个小型服务器,此时我们

python manage.py runserver

既可以启动服务器,在服务器中会给出url地址和端口号,在浏览器中输入既可以打开网站。注意myblog这个文件夹目录名称不建议修改,因为Django的一些基础配置已经使用了这个目录名称。


这是Django的配置文件

在创建应用:

python manage.py startapp blog



创建好了应用

配置url:

这里用反向生成的写法,


总的urls的写法


应用里的urls写法

在根urls文件中from Django.urls import inculde然后在url写的后面写一个include,include的写法是应用.urls。然后在分url中,写一个app_name,然后为分urls起一个name。然后访问url就可以通过{% url '_login:login' %},也可以通过正常的url:/login来访问view里的index函数。



Django连接mysql服务器(这里是连接,不是创建,是连接弄好的数据库)

在Django中,默认的配置数据库是sqlite3,但是我们一般都用的是MySQL,

django中的默认是:

DATABASES = {

'default': {

'ENGINE':'django.db.backends.sqlite3',

'NAME':'mydatabase',

    }

}

然后我们将其改为:

DATABASES = {

                'default': { 

                        'ENGINE': 'django.db.backends.mysql',

                        'NAME': 'mydatabase',

                        'USER': 'mydatabaseuser', 

                        'PASSWORD': 'mypassword', 

                        'HOST': '127.0.0.1',

                        'PORT': '3306', 

               }

}

NAME: 指定的数据库名,如果是sqlite的话,就需要填数据库文件的绝对位置

USER: 数据库登录的用户名,mysql一般都是root

PASSWORD:登录数据库的密码,必须是USER用户所对应的密码

HOST: 由于一般的数据库都是C/S结构的,所以得指定数据库服务器的位置,我们一般数据库服务器和客户端都是在一台主机上面,所以一般默认都填127.0.0.1

PORT:数据库服务器端口,mysql默认为3306

HOST和PORT都可以不填,使用默认的配置,但是如果你有更改默认配置的话,就需要填入更改后的。

~上述这些都做完了后,然后在_init_.py中写入:

import pymysql

pymysql.install_as_MySQLdb()

添加完这些就可以执行manage.py(这个是你项目里面的manage.py,(appname )):进入项目的cmd中执行 python manage.py inspectdb,不行的话就是 python manage.py inspectdb >appname/models.py

执行完命令inspectdb后,就会显示这样的几行执行后结果:


执行inspectdb的结果

这些就是建立好的类(对应于数据库的),然后直接复制进model.py中,就可以访问数据库的内容了。

还要讲一项,就是将我们的数据添加到admin管理器中所以我们还需要做让项目的数据知道我们的更新,so同样是在manage.py的执行程序中来创建超级用户。

这是创建超级用户的命令

同样执行两个命令就可以: makemigrations blog 和 migrate blog (blog是app项目的名字)

考自:https://blog.csdn.net/Clark_Fitz817/article/details/79951671 



Django的MTV模式

方开始学习Django,我将它当成一个MVC模式的框架,但是在学习的过程中发现不大对劲啊。他和MVC框架还是不一样的,通过学习其他人的文章,原来Django是一种MTV框架:

M 代表模型(Model):负责业务对象和数据库的关系映射(ORM)。

T 代表模板 (Template):负责如何把页面展示给用户(html)。

V 代表视图(View):负责业务逻辑,并在适当时候调用Model和Template。

Django 视图 不处理用户输入,而仅仅决定要展现哪些数据给用户;Django 模板 仅仅决定如何展现Django视图指定的数据。

除了以上三层之外,还需要一个URL分发器,它的作用是将一个个URL的页面请求分发给不同的View处理,View再调用相应的Model和Template,MTV的响应模式如下所示:


1,Web服务器(中间件)收到一个http请求

2,Django在URLconf里查找对应的视图(View)函数来处理http请求

3,视图函数调用相应的数据模型来存取数据、调用相应的模板向用户展示页面

4,视图函数处理结束后返回一个http的响应给Web服务器

5,Web服务器将响应发送给客户端


落到实处,Django的MTV模式相对应的python文件如下:


考自:http://blog.csdn.net/dbanote/article/details/11338953


url-path

这里在django2里,url从url的方法变成了path,它允许使用一种更加简洁、可读的路由语法,所以这里记录一下路由path的语法:

1.要注意的是不再是url带^的写法 直接''里写路径就行了 而且用到正则表达式的时候要写成re_path 不要忘了前面引入re_path的类。

2.url之django2的path反向解析,这是之前拿django2写url最头疼的,所以下决心好好看一下django2的url文章,

首先应该先明确:

一.在html页面上的内容特别是向用户展示的url地址,比如常见的超链接,图片链接等,最好能动态生成,而不要固定。

二.一个django项目中一般包含了多个django应用(app)。

三.一个视图(view)往往对应多个url地址。

然后,在django中实现反向解析URL必备条件就是 url和view能一对一 的匹配。(通过view找到唯一一个对应的url,通过url也能找到唯一一个view)。

最 简单的方式 就是使用 name ,可以理解为url起了一个名字。

例如我在我的login这个app底下的urls里这么写:

app_name ='login'#这里的app_name代替了django之前版本项目url文件的namespace,在前端的用法一样

urlpatterns = [

path('', lv.login),

path('', lv.login, name='testpost')

]

然后在html的form请求这么写:

<form action="{% url 'login:testpost' %}" name="f" method="post">

这样子就完成了这么一个页面请求,请求到了login下的url的第二条。



csrf

在表单提交这里,为了安全还是咋的,反正这里是要在form标签后面加上一个{% csrf_token %},然后之后要在views里面引用一个from django.views.decorators.csrfimport csrf_exempt,然后在方法之前@csrf_exempt

否则会报 “CSRF验证失败. 相应中断”的错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容