Django学习之路(3)

Django使用mysql数据库和网页重定向

1.在django的使用mysql数据库

(1)在settings.py中把默认数据库设置为mysql。
DATABASES = {
    'default': {
        # 'ENGINE': 'django.db.backends.sqlite3',
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'book',  # 设置使用数据库的名字,数据库需要手动创建
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 123,  # 用户密码
        'HOST': 'localhost',  # 指定mysql数据库所在的电脑ip
        'PORT': 3306,  # 指定数据库的端口
    }
}

(2)安装pymysql

pip3 install pymysql

(3)在我们的blog目录下的__init__.py文件中加入:

import pymysql
pymysql.install_as_MySQLdb()

(4)如果在执行python manage.py runserver后,访问服务器成功,则说明配置mysql成功。

2.通过实例理解页面重定向

(1)新建一个booktest应用(记得在settings.py里面对应用进行注册),在我们的应用中编写我们的models.py,在进行数据迁移,创建数据表:
python manage.py makemigrations
python manage.py migrate
from django.db import models

# Create your models here.


class BookInfo(models.Model):
    btitle = models.CharField(max_length=20)
    bdate = models.DateField()
    brend = models.IntegerField(default=0)  # 阅读量
    bcomment = models.IntegerField(default=0)  # 评论量
    isDelete = models.BooleanField(default=False)  # 软删除


class HeroInfo(models.Model):
    hname = models.CharField(max_length=20)
    hgender = models.BooleanField(default=False)
    hcomment = models.CharField(max_length=128)
    hbook = models.ForeignKey('BookInfo')
    isDelete = models.BooleanField(default=False)

(2)在templates中新建一个booktest的文件夹,在booktest中创建我们的主页index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<a href="/create">新增</a>
<ul>
    {% for book in books %}

        <li>{{ book.btitle }}--<a href="/delete{{ book.id }}">删除</a>></li>
    {% endfor %}
</ul>
</body>
</html>

(3)在booktest应用中的views.py中创建视图函数

from django.shortcuts import render, redirect
from booktest.models import *
from datetime import date
from django.http import HttpResponseRedirect
# Create your views here.


def index(request):
    books = BookInfo.objects.all()
    return render(request, 'booktest/index.html', {'books': books})


def create(request):
    b = BookInfo()
    b.btitle = '流星蝴蝶剑'
    b.bdate = date(1990, 1, 1)
    b.save()
    return redirect('/index')


def delete(request, bid):
    book = BookInfo.objects.get(id=bid)
    book.delete()
    return redirect('/index')

(4)配置路由
在项目的路由中新增

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'^', include('booktest.urls'))
]

在我们的booktest应用中新增一个urls.py,并写入一下内容

from django.conf.urls import url
from booktest import views
urlpatterns = [
    url(r'^create$', views.create),
    url(r'^index$', views.index),
    url(r'^delete(\d+)$', views.delete)
]

(5)刷新我们的页面Django学习之路(3)_第1张图片
我们可以发现当我们点击新增和删除时,会‘刷新’页面,而不是跳转到其他页面,因此,我们可以总结出:
重定向就是当浏览器发送请求时,我们的视图函数对他进行处理,但是不返回内容,而是跳转到其他页面。

你可能感兴趣的:(Django学习之路(3))