栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django使用心得(二)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django使用心得(二)

连接数据库

Django自带一个轻量的数据库sqlite, 不过在实际使用过程中,可能会出现各种莫名问题,所以,从移开时就连接其他数据库是个好方法.

个人比较喜欢使用mysql数据库

django连接已有数据库方法:

1.修改django的setting.py中默认DATABASES

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

修改为

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 默认
        'NAME': '连接的数据库',
        'HOST': '# mysql的ip地址',  
        'PORT': # mysql的端口,  
        'USER': '# mysql的用户名',  
        'PASSWORD': ' # mysql的密码' 
    }
}

2.修改项目文件夹下的__init__.py文件

由于配置了Mysql,所以要替换默认的数据库引擎,在项目文件夹下的__init__.py,添加以下内容

import pymysql

pymysql.install_as_MySQLdb()
关于时区:

在编辑settings.py文件前,需要设置time_zone为自己的时区

修改后,获得时间方法应当改变

通常获得时间方法

import datetime
now = datetime.datetime.now()

启用time zone后

import datetime 
from django.utils.timezone import utc
utcnow = datetime.datetime.utcnow().replace(tzinfo=utc)

除非软件功能附带用户可以设置所在时区,否则时间记录就让django代劳

国内时区采用

TIME_ZONE = 'Asia/Shanghai'

django默认自带了一些应用

通常, INSTALLED_APPS 默认包括了以下 Django 的自带应用:

  • django.contrib.admin -- 管理员站点, 你很快就会使用它。
  • django.contrib.auth -- 认证授权系统。
  • django.contrib.contenttypes -- 内容类型框架。
  • django.contrib.sessions -- 会话框架。
  • django.contrib.messages -- 消息框架。
  • django.contrib.staticfiles -- 管理静态文件的框架。

这些应用被默认启用是为了给常规项目提供方便。

默认开启的某些应用需要至少一个数据表,所以,在使用他们之前需要在数据库中创建一些表。请执行以下命令:

django模型

在django中,数据库驱动的web应用第一部是定义模型:数据结构设计和附加的其他元数据

在polls app中,需要创建两个模型,question问题和choice选项:

question包括问题描述和发布时间,choice模型有两个字段,选项描述和内容

所有模型都被表示为django.db.models.Model类的子类

from django.db import models


class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')


class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

每个field类实例变量的名(如question_text, pub_date)将会作为数据库的列名,所以变量名的命名需要利于数据库查询

激活模型

为了在工程中包含这个应用,需要配置installed_apps,因为pollsconfig类卸载文件polls/apps.py中,所以他的路径为'polls.apps.PollsConfig', 在mysite/settings.py中添加子项后看起来是这样

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

接着运行

# 苹果和linux
$ python manage.py makemigrations polls
# windows
...> py manage.py makemigrations polls

运行时可能出现的错误:

一、

No installed app with label 'polls'.

原因时没有在installed app中对模型进行配置

二、

数据迁移成功但是没有在数据库中建立对应的表:

可能是django的一个bug, 将app中对应的*_initial.py中将对应的迁移记录清除,重新建立表即可

API

进入交互式Python命令行

py manage.py shell

我们使用这个命令而不是简单的使用“python”是因为 manage.py 会设置 DJANGO_SETTINGS_MODULE 环境变量,这个变量会让 Django 根据 mysite/settings.py 文件来设置 Python 包的导入路径

创建管理员账号
py manage.py createsuperuser

键入想要使用的用户名和邮箱以及创建密码

Username: admin
Email address: admin@example.com
Password: **********
Password (again): *********
Superuser created successfully.

向管理页面中加入polls app

当我们进入管理页面后,我们得到这个界面

我们要在对应项目(polls app)的admin中添加项目对象

# polls/admin.py
from django.contrib import admin
from .models import Question
admin.site.register(Question)

如何将模型中的字段名命名为中文名称

在模型对应的字段类下面添加class Meta即可

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.question_text

    def was_published_tecently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

    class Meta:
        verbose_name = '问题'
        verbose_name_plural = '问题'

想要将项目(polls app)名改为中文,可以直接在apps.py文件中,项目类下面创建verbose_name变量

class PollsConfig(AppConfig):
    default_auto_field = 'django.db.models.BigAutoField'
    name = 'polls'
    verbose_name = '问答'

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/915928.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号