python之路_day107_django中url反向解析及数据库连接

Posted 骑猪走秀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之路_day107_django中url反向解析及数据库连接相关的知识,希望对你有一定的参考价值。

一、url反向解析

  在正式介绍反向解析之前,我们首先介绍一下在django中的url参数,如下为我们url实例,其中name参数就是其别名,也就是我们接下来讲解的反向解析中所依靠的参数。

1、模板中反向解析

  在我们的前端页面上,如form表单,我们通常会指定提交的路径,但是以往我们都是将路径写死,这显然不是很合理,因为当url中的路径需要改变的时候,我们又需要逐一去更改页面。这样不合理。所以我们就要用到url的别名进行反向解析。

语法:
{% url \'url的别名\' %}

   实例如下:

2、视图中反向解析

  在我们的视图中,如redirect,我们也会需要用到指定url情况,将路径写死很显然也不是很合理,我们也可通过反向解析的方式获得相应的路径,具体语法如下:

语法:
from django.core.urlresolvers import reverse
reverse(\'url别名\')

   实例如下:

3、带参数的反向解析

  有如下形式的url别名,注意其特点是,对应的url中有正则表达式的分组参数,按照如上的方式进行反向解析时候,我们该怎样把它需要的参数传给他呢?

  对于这样的url,想通过反向解析获得相应的url时,必须要给其传符合正则表达式的参数,具体办法如下:

  模板代码中情况:

  视图代码中情况:

 

二、url名称空间

  假如,我们有两个app应用,通过路由分发,在两个app的urls文件中假如两个app中的url别名相同,则通过反向解析得到的结果有可能出现混乱,即会查找到另一个app中url别名对应的url路径,这显然不是我们想要的,造成的这样的原因是django在查找url别名是会从全局中查找。解决办法是在路由分发时指定名称空间参数namespace,如下所示:

  如上设置以后,在app应用按照如下方式方向解析时就不会出现问题:

三、django连接数据库

  我们知道在django中有通过数据迁移我们便有默认的sqlite数据库供我们使用,这是django自带的数据库,其实并不能满足我们的实际生产中的使用,这是因为在django的setting文件中进行如下的配置:

DATABASES = {
    \'default\': {
        \'ENGINE\': \'django.db.backends.sqlite3\',
        \'NAME\': os.path.join(BASE_DIR, \'db.sqlite3\'),
    }
}

  如果我们不想使用默认数据库,则我们可以重新在setting文件中配置此参数,设置成我们自己想要连接的数据库,如下为mysql数据库的配置方式,注意一点,django中不可以实现建立数据库,所以数据库需要我们在cmd中自行建好。

DATABASES = {

    \'default\': {

        \'ENGINE\': \'django.db.backends.mysql\',
        \'NAME\': \'day107\',                                     #你的数据库名称
        \'USER\': \'root\',                                       #你的数据库用户名
        \'PASSWORD\': \'\',                                       #你的数据库密码
        \'HOST\': \'\',                                           #你的数据库主机,留空默认为localhost
        \'PORT\': \'3306\',                                       #你的数据库端口

    }
}

  除此,配置完上述以后,也不能完成数据库的迁移,主要原因和解决办法如下。如下更换跟换数据库的接口代码需要放在django项目或者应用的int.py 文件,保证在项目启动的时候完成自动加载。

 

以上是关于python之路_day107_django中url反向解析及数据库连接的主要内容,如果未能解决你的问题,请参考以下文章

python之路_day78_django中ajax应用

python之路_day71_django分页及session介绍

python之路_day80_models模型进阶

python之路_day86_blog 评论楼

python之路_day85_blog 点赞与评论

Python之路_Day7