Django和Vue的增删改查

1、静态路由

urlpatterns属性

urlpatterns是路由文件中的一个全局变量,用来存放路由及视图函数的映射关系

用户发起的请求URL都会首先进入主控制目录下的这个urls.py文件中进行查找匹配

  1. 首先找到urls.py下的urlpatterns全局变量,这是一个路由规则实例的列表数据。

  2. 按照先后定义顺序,进行路由匹配。

  3. 找到第一个匹配项时停止匹配,执行匹配到的视图函数。

  4. 遍历完全,未发现匹配,django进行异常处理

其中urlpatterns中的每一个路由映射规则可以由pathre_path进行构造


注意Django的路由不考虑HTTP请求方式,仅根据URL进行路由;即,只要URL相同,无论POSTGET等哪种请求方式都指向同一个操作函数

path方法

path(str, view, kwargs=None, name=None)
'''
str:一个匹配对应url地址的规则字符串
view:路由对应的视图函数,并且会自动封装HttpRequest作为第一个参数给这个视图函
kwargs:视图函数的关键字参数
name:该路由的全局命名,可以让我们方便的在django项目中任意部分显示的使用,相当于为url取变量名,接下来全局使用该命名值即可;当对应url路由改变之后,结合路由反向解析使用的地方不需要更改路由
'''

re_path

re_path(regex, view, kwargs=None, name=None)
'''
regex:一个匹配对应url地址的规则字符串
view:路由对应的视图函数,并且会自动封装HttpRequest作为第一个参数给这个视图函
kwargs:视图函数的关键字参数
name:该路由的全局命名,可以让我们方便的在django项目中任意部分显示的使用,相当于为url取变量名,接下来全局使用该命名值即可;当对应url路由改变之后,结合路由反向解析使用的地方不需要更改路由
'''

案例

新闻 分类

1、新建django项目

使用pycharm创建项目

file---newProject

使用命令创建项目

django-admin startproject projectname

2、 新建app

python manage.py startapp app01

3、 配置settings.py,在settings.py中配置app,切换语言和时区,切换数据库为mysql,

INSTALLED_APPS = [
    ...
    'app01.apps.App01Config',
]
LANGUAGE_CODE = 'zh-hans'  # 语言
​
TIME_ZONE = 'Asia/Shanghai'  # 时区
​
USE_TZ = False  # 让修改的时区生效
​
# 配置数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 引擎,使用 mysql
        'NAME': 'day04',   # 数据库名称
        'USER': 'root',  # 数据库的登录用户名
        'PASSWORD': 'root1234',  # 数据库的登录的密码
        'HOST': '127.0.0.1',  # 数据库所在的主机
        'PORT': 3306,  # 数据库使用的端口号
    }
}

需要在settings.py所在的目录下init.py中,写入以下内容

import pymysql
pymysql.install_as_MySQLdb()

4、 在后端进行跨域配置

什么是跨域问题?

指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

所谓同源是指,域名,协议,端口均相同,只要有一个不同,就是跨域。

django后端跨域

  • 安装django-cors-headers

    pip install django-cors-headers
    ​
    # pip show 模块名,  查看某个模块是否安装过
    pip show django-cors-headers
  • 在settings.py下的INSTALLED_APPS中进行配置

    INSTALLED_APPS = [
        # 第三方包
        'corsheaders',  # 跨域
        'app01.apps.App01Config',
    ]
  • 在settings.py下的MIDDLEWARE中配置

    MIDDLEWARE = [
        'django.contrib.sessions.middleware.SessionMiddleware',
        # 在这里进行配置跨域 , 在中间件第三行
        'corsheaders.middleware.CorsMiddleware',
        'django.middleware.common.CommonMiddleware',
        # 注释掉csrf这一行,第五行
        # 'django.middleware.csrf.CsrfViewMiddleware',
    ]
  • 在settings.py中添加变量,允许所有的 源访问

    CORS_ALLOW_ALL_ORIGINS = True  # 允许所有的源进行访问

5、 在主路由下配置app,做路由分发

from django.contrib import admin
from django.urls import path, include
​
urlpatterns = [
    path('admin/', admin.site.urls),
    path('app01/', include('app01.urls'))
]
​
# app01/urls.py
from django.urls import path
from . import views
​
urlpatterns = [
    
]

6、 在models.py中设计新闻分类表

from django.db import models
​
# Create your models here.
​
​
# 在models.py下每新建一个类,就代表在数据库新建一张表
class Cate(models.Model):
    # 类下面的属性,是表中字段
    name = models.CharField(max_length=32)
​
    def __str__(self):
        return self.name

7、 生成迁移文件和执行迁移文件

python manage.py makemigrations
​
python manag
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以提供一个简单的示例代码,以便您了解如何使用Django进行前后端分离的增删改查操作。请注意,以下代码仅供参考,您需要根据自己的需求进行修改和完善。 首先,我们需要创建一个Django项目,并在其中创建一个应用程序。在应用程序中,我们需要定义模型以及处理HTTP请求的视图函数。 下面是一个简单的模型示例: ```python # models.py from django.db import models class Product(models.Model): name = models.CharField(max_length=100) description = models.TextField() price = models.DecimalField(max_digits=10, decimal_places=2) ``` 然后,我们需要创建视图函数来处理HTTP请求。在这个示例中,我们将创建一个基于类的视图,并使用Django Rest Framework提供的GenericAPIView和ModelMixin来实现CRUD操作。 ```python # views.py from rest_framework import generics, mixins from .models import Product from .serializers import ProductSerializer class ProductListCreateAPIView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView): queryset = Product.objects.all() serializer_class = ProductSerializer def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): return self.create(request, *args, **kwargs) class ProductRetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, generics.GenericAPIView): queryset = Product.objects.all() serializer_class = ProductSerializer def get(self, request, *args, **kwargs): return self.retrieve(request, *args, **kwargs) def put(self, request, *args, **kwargs): return self.update(request, *args, **kwargs) def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs) ``` 上述视图函数中,我们定义了两个基于类的视图:ProductListCreateAPIView和ProductRetrieveUpdateDestroyAPIView。ProductListCreateAPIView用于创建和列出产品,ProductRetrieveUpdateDestroyAPIView用于获取、更新和删除一个特定的产品。 接下来,我们需要定义序列化器来将模型转换为JSON格式。在这个示例中,我们使用Django Rest Framework提供的ModelSerializer。 ```python # serializers.py from rest_framework import serializers from .models import Product class ProductSerializer(serializers.ModelSerializer): class Meta: model = Product fields = '__all__' ``` 最后,我们需要在urls.py中定义路由,以便将HTTP请求路由到正确的视图函数。 ```python # urls.py from django.urls import path from .views import ProductListCreateAPIView, ProductRetrieveUpdateDestroyAPIView urlpatterns = [ path('products/', ProductListCreateAPIView.as_view(), name='product_list_create'), path('products/<int:pk>/', ProductRetrieveUpdateDestroyAPIView.as_view(), name='product_retrieve_update_destroy'), ] ``` 现在,我们已经完成了一个简单的Django前后端分离的增删改查示例。您可以使用前端框架(如React或Vue.js)来处理HTTP请求并呈现数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值