Django2 +MySQL8 简单实现数据的增删改查功能

1、项目结构:

blog应用的数据库模型源码:

# This is an auto-generated Django model module.
# You'll have to do the following manually to clean this up:
#   * Rearrange models' order
#   * Make sure each model has one field with primary_key=True
#   * Make sure each ForeignKey has `on_delete` set to the desired behavior.
#   * Remove `managed = False` lines if you wish to allow Django to create, modify, and delete the table
# Feel free to rename the models, but don't rename db_table values or field names.
from django.db import models


class BizArticle(models.Model):
    id = models.BigAutoField(primary_key=True)
    title = models.CharField(max_length=255, blank=True, null=True)
    user_id = models.BigIntegerField()
    cover_image = models.CharField(max_length=255, blank=True, null=True)
    qrcode_path = models.CharField(max_length=255, blank=True, null=True)
    is_markdown = models.PositiveIntegerField(blank=True, null=True)
    content = models.TextField(blank=True, null=True)
    content_md = models.TextField(blank=True, null=True)
    top = models.IntegerField(blank=True, null=True)
    type_id = models.BigIntegerField()
    status = models.PositiveIntegerField(blank=True, null=True)
    recommended = models.PositiveIntegerField(blank=True, null=True)
    original = models.PositiveIntegerField(blank=True, null=True)
    description = models.CharField(max_length=300, blank=True, null=True)
    keywords = models.CharField(max_length=200, blank=True, null=True)
    comment = models.PositiveIntegerField(blank=True, null=True)
    create_time = models.DateTimeField(blank=True, null=True)
    update_time = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'biz_article'


class BizArticleLook(models.Model):
    id = models.BigAutoField(primary_key=True)
    article_id = models.BigIntegerField()
    user_id = models.BigIntegerField(blank=True, null=True)
    user_ip = models.CharField(max_length=50, blank=True, null=True)
    look_time = models.DateTimeField(blank=True, null=True)
    create_time = models.DateTimeField(blank=True, null=True)
    update_time = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'biz_article_look'


class BizArticleLove(models.Model):
    id = models.BigAutoField(primary_key=True)
    article_id = models.BigIntegerField()
    user_id = models.BigIntegerField(blank=True, null=True)
    user_ip = models.CharField(max_length=50, blank=True, null=True)
    love_time = models.DateTimeField(blank=True, null=True)
    create_time = models.DateTimeField(blank=True, null=True)
    update_time = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'biz_article_love'


class BizArticleTags(models.Model):
    id = models.BigAutoField(primary_key=True)
    tag_id = models.BigIntegerField()
    article_id = models.BigIntegerField()
    create_time = models.DateTimeField(blank=True, null=True)
    update_time = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'biz_article_tags'


class BizComment(models.Model):
    id = models.BigAutoField(primary_key=True)
    sid = models.BigIntegerField(blank=True, null=True)
    user_id = models.BigIntegerField(blank=True, null=True)
    pid = models.BigIntegerField(blank=True, null=True)
    qq = models.CharField(max_length=13, blank=True, null=True)
    nickname = models.CharField(max_length=13, blank=True, null=True)
    avatar = models.CharField(max_length=255, blank=True, null=True)
    email = models.CharField(max_length=100, blank=True, null=True)
    url = models.CharField(max_length=200, blank=True, null=True)
    status = models.CharField(max_length=9, blank=True, null=True)
    ip = models.CharField(max_length=64, blank=True, null=True)
    lng = models.CharField(max_length=50, blank=True, null=True)
    lat = models.CharField(max_length=50, blank=True, null=True)
    address = models.CharField(max_length=100, blank=True, null=True)
    os = models.CharField(max_length=64, blank=True, null=True)
    os_short_name = models.CharField(max_length=10, blank=True, null=True)
    browser = models.CharField(max_length=64, blank=True, null=True)
    browser_short_name = models.CharField(max_length=10, blank=True, null=True)
    content = models.CharField(max_length=2000, blank=True, null=True)
    remark = models.CharField(max_length=100, blank=True, null=True)
    support = models.PositiveIntegerField(blank=True, null=True)
    oppose = models.PositiveIntegerField(blank=True, null=True)
    create_time = models.DateTimeField(blank=True, null=True)
    update_time = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'biz_comment'


class BizTags(models.Model):
    id = models.BigAutoField(primary_key=True)
    name = models.CharField(max_length=50)
    description = models.CharField(max_length=100, blank=True, null=True)
    create_time = models.DateTimeField(blank=True, null=True)
    update_time = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'biz_tags'


class BizType(models.Model):
    id = models.BigAutoField(primary_key=True)
    pid = models.BigIntegerField(blank=True, null=True)
    name = models.CharField(max_length=50, blank=True, null=True)
    description = models.CharField(max_length=200, blank=True, null=True)
    sort = models.IntegerField(blank=True, null=True)
    icon = models.CharField(max_length=100, blank=True, null=True)
    available = models.PositiveIntegerField(blank=True, null=True)
    create_time = models.DateTimeField(blank=True, null=True)
    update_time = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'biz_type'


class SysConfig(models.Model):
    home_desc = models.CharField(max_length=255, blank=True, null=True)
    home_keywords = models.CharField(max_length=255, blank=True, null=True)
    domain = models.CharField(max_length=255, blank=True, null=True)
    cms_url = models.CharField(max_length=255, blank=True, null=True)
    site_url = models.CharField(max_length=255, blank=True, null=True)
    site_name = models.CharField(max_length=255, blank=True, null=True)
    site_desc = models.CharField(max_length=255, blank=True, null=True)
    site_favicon = models.CharField(max_length=255, blank=True, null=True)
    static_web_site = models.CharField(max_length=255, blank=True, null=True)
    author_name = models.CharField(max_length=100, blank=True, null=True)
    author_email = models.CharField(max_length=100, blank=True, null=True)
    wx_code = models.CharField(max_length=255, blank=True, null=True)
    qq = models.CharField(max_length=255, blank=True, null=True)
    weibo = models.CharField(max_length=255, blank=True, null=True)
    github = models.CharField(max_length=255, blank=True, null=True)
    maintenance = models.PositiveIntegerField(blank=True, null=True)
    maintenance_data = models.DateTimeField(blank=True, null=True)
    comment = models.PositiveIntegerField(blank=True, null=True)
    qiuniu_base_path = models.CharField(max_length=255, blank=True, null=True)
    qiniu_access_key = models.CharField(max_length=100, blank=True, null=True)
    qiniu_secret_key = models.CharField(max_length=100, blank=True, null=True)
    qiniu_bucket_name = models.CharField(max_length=100, blank=True, null=True)
    baidu_push_token = models.CharField(max_length=100, blank=True, null=True)
    wx_praise_code = models.CharField(max_length=200, blank=True, null=True)
    zfb_praise_code = models.CharField(max_length=200, blank=True, null=True)
    baidu_api_ak = models.CharField(max_length=100, blank=True, null=True)
    create_time = models.DateTimeField(blank=True, null=True)
    update_time = models.DateTimeField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'sys_config'


class SysPermission(models.Model):
    id = models.BigAutoField(primary_key=True)
    name = models.CharField(max_length=200)
    description = models.CharField(max_length=200, blank=True, null=True)
    url = models.CharField(max_length=200)
    pid = models.BigIntegerField(blank=True, null=True)

    class Meta:
        managed = False
        db_table = 'sys_permission'


class SysPermissionRole(models.Model):
    id = models.BigAutoField(primary_key=True)
    role_id = models.BigIntegerField()
    permission_id = models.BigIntegerField()

    class Meta:
        managed = False
        db_table = 'sys_permission_role'


class SysRole(models.Model):
    id = models.BigAutoField(primary_key=True)
    name = models.CharField(max_length=200)

    class Meta:
        managed = False
        db_table = 'sys_role'


class SysRoleUser(models.Model):
    id = models.BigAutoField(primary_key=True)
    sys_user_id = models.BigIntegerField()
    sys_role_id = models.BigIntegerField()

    class Meta:
        managed = False
        db_table = 'sys_role_user'


class SysUser(models.Model):
    id = models.BigAutoField(primary_key=True)
    username = models.CharField(max_length=200)
    password = models.CharField(max_length=200)

    class Meta:
        managed = False
        db_table = 'sys_user'


class TCategory(models.Model):
    name = models.CharField(max_length=50)

    class Meta:
        managed = False
        db_table = 't_category'


class TCategoryItem(models.Model):
    category = models.ForeignKey(TCategory, models.DO_NOTHING, blank=True, null=True)
    item = models.ForeignKey('TItem', models.DO_NOTHING, blank=True, null=True)

    class Meta:
        managed = False
        db_table = 't_category_item'


class TItem(models.Model):
    name = models.CharField(max_length=50)

    class Meta:
        managed = False
        db_table = 't_item'

blog应用的功能函数views.py

from django.http import HttpResponse
from blog.models import TItem


def welcome(request):
    list = TItem.objects.all()
    for i in range(len(list)):
        print("序号:%s   值:%s" % (i + 1, list[i]))
    return HttpResponse("<h1>Welcome to Python3</he>")


def insert(request):
    item = TItem(name='5')
    item.save()
    return HttpResponse('数据插入成功')


def update(request):
    item = TItem.objects.get(id=1)
    item.name = '10'
    item.save()
    return HttpResponse("数据更新成功")


def delete(request):
    item = TItem.objects.get(id=2)
    item.delete()
    return HttpResponse('数据删除成功')


def select(request):
    list = TItem.objects.all()
    for i in range(len(list)):
        print("序号:%s   值:%s" % (i + 1, list[i].id))
    return HttpResponse('数据查询成功')

blog 应用的路由配置urls.py

from django.conf.urls import url
from . import views

urlpatterns = [
    url(r'^insert/', views.insert),
    url(r'^delete/', views.delete),
    url(r'^update/', views.update),
    url(r'^select/', views.select),
]

效果展示:

实现连接虚拟机中的Django+MySQL并进行增删改查,需要以下步骤: 1. 确保虚拟机中DjangoMySQL已经正确安装并启动。 2. 在Django中创建一个可以进行数据库操作的应用程序,在应用程序中创建模型类,定义好需要操作的字段。 3. 在MySQL中创建相应的数据库和表,与Django中定义的模型类对应。 4. 在Django中配置数据库连接,可以在settings.py中进行配置。 5. 在Django中编写视图函数,实现增删改查功能。 6. 在app中编写前端界面,通过ajax等方式调用Django中的视图函数进行数据操作。 具体实现过程可以参考以下步骤: 1. 在虚拟机中启动Django,并创建一个应用程序,例如命名为myapp。 2. 在myapp中创建一个模型类,代码如下: ```python from django.db import models class User(models.Model): name = models.CharField(max_length=20) age = models.IntegerField() ``` 3. 在MySQL中创建一个名为mydb的数据库,并在其中创建一个名为user的表,代码如下: ```mysql CREATE DATABASE mydb; USE mydb; CREATE TABLE user ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(20) NOT NULL, age INT NOT NULL, PRIMARY KEY (id) ); ``` 4. 在Django的settings.py中配置MySQL连接,代码如下: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydb', 'USER': 'username', 'PASSWORD': 'password', 'HOST': 'localhost', 'PORT': '3306', } } ``` 其中,username和password需要替换为MySQL中的用户名和密码。 5. 在myapp中编写视图函数,可以实现增删改查功能,代码如下: ```python from django.shortcuts import render, HttpResponse from .models import User def add_user(request): if request.method == 'POST': name = request.POST.get('name') age = request.POST.get('age') user = User(name=name, age=age) user.save() return HttpResponse('success') def delete_user(request, id): user = User.objects.get(id=id) user.delete() return HttpResponse('success') def update_user(request, id): if request.method == 'POST': name = request.POST.get('name') age = request.POST.get('age') user = User.objects.get(id=id) user.name = name user.age = age user.save() return HttpResponse('success') def get_user(request, id): user = User.objects.get(id=id) return HttpResponse(f'name: {user.name}, age: {user.age}') ``` 其中,add_user函数为添加用户,delete_user函数为删除用户,update_user函数为更新用户信息,get_user函数为获取用户信息。 6. 在app中编写前端界面,通过ajax等方式调用Django中的视图函数进行数据操作。 例如,添加用户的前端界面可以编写如下代码: ```html <form> <label for="name">name:</label> <input type="text" id="name" name="name"><br><br> <label for="age">age:</label> <input type="text" id="age" name="age"><br><br> <input type="submit" value="Submit" onclick="addUser()"> </form> <script> function addUser() { var name = document.getElementById("name").value; var age = document.getElementById("age").value; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState == XMLHttpRequest.DONE) { if (xhr.status == 200) { alert('success'); } else { alert('error'); } } } xhr.open('POST', '/add_user/', true); xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xhr.send("name=" + name + "&age=" + age); } </script> ``` 其中,addUser函数通过ajax调用Django中的add_user视图函数,将输入的name和age值传递给Django进行添加操作。 其他操作的前端界面类似,只需要调用不同的视图函数即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值