美文网首页
Django学习笔记--自用

Django学习笔记--自用

作者: JerryLoveCoding | 来源:发表于2018-11-05 22:28 被阅读0次

    入门

    首先,在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验证失败. 相应中断”的错。

    相关文章

      网友评论

          本文标题:Django学习笔记--自用

          本文链接:https://www.haomeiwen.com/subject/dsjztqtx.html