zoukankan      html  css  js  c++  java
  • 2018.7.7-数据库配置方面及首页方面的问题

    数据库方面的问题

    今天遇到的第一个问题就是数据库配置的问题,首先贴上MySQL数据库的通用配置:

     1 DATABASES = {
     2     'default': {
     3     'ENGINE': 'django.db.backends.mysql',
     4     'NAME':'dbname',
     5     'USER': 'root',
     6     'PASSWORD': 'xxx',
     7     'HOST': '',
     8     'PORT': '',
     9     }
    10 }
    setting文件配置摘要
    1 # 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
    2   
    3 # 如下设置放置的与project同名的配置的 __init__.py文件中
    4   
    5 import pymysql
    6 pymysql.install_as_MySQLdb() 
    _init_文件配置摘要

    根据这个配置就可使用MySQL数据库来完成后面的工作。

    但是,当我在创建数据库的时候,系统报了如下的错误

    主要错误的代码如下:

    1 class Tag(models.Model):
    2     nid = models.AutoField(primary_key=True)
    3     title = models.CharField(verbose_name='标签名称', max_length=32)
    4     blog = models.ForeignKey(verbose_name='所属博客', to='Blog', to_field='nid')    #错误行

    这个错误的主要原因是:

    在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错:

    TypeError: __init__() missing 1 required positional argument: 'on_delete'

    举例说明:

    user=models.OneToOneField(User)
    owner=models.ForeignKey(UserProfile)

    需要改成:

    user=models.OneToOneField(User,on_delete=models.CASCADE) 
    
    owner=models.ForeignKey(UserProfile,on_delete=models.CASCADE) 

    参数说明:
    on_delete有CASCADE、PROTECT、SET_NULL、SET_DEFAULT、SET()五个可选择的值
    CASCADE:此值设置,是级联删除。
    PROTECT:此值设置,是会报完整性错误。
    SET_NULL:此值设置,会把外键设置为null,前提是允许为null。
    SET_DEFAULT:此值设置,会把设置为外键的默认值。
    SET():此值设置,会调用外面的值,可以是一个函数。
    一般情况下使用CASCADE就可以了。

    URL路由的问题

    使用path来配置URL路由的时候,遇到了正则表达式不能使用的问题,查了一下,原来是Django 2.0的新改动,如果需要使用正则表达式可以引入

    from django.urls import re_path

    具体可以参照这位大神的博客

    详细了解改动内容,可以参照官方文档

  • 相关阅读:
    采用二叉搜索树来统计文本中单词出现的频率
    一个表查找程序
    unix grep命令的大致实现
    字符串操作函数
    关于宏和逗号表达式
    http状态码的分类
    nginx源码学习资源(不断更新)转
    什么是CGI
    字符串操作 删除字符
    Ubuntu安装特定版本安装包
  • 原文地址:https://www.cnblogs.com/yu-jie/p/9276752.html
Copyright © 2011-2022 走看看