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请求这么写:

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



csrf

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

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

你可能感兴趣的:(Django学习笔记--自用)