欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > Djiango《极简信息管理系统》开发

Djiango《极简信息管理系统》开发

2025/3/31 7:13:08 来源:https://blog.csdn.net/e34341234/article/details/146427411  浏览:    关键词:Djiango《极简信息管理系统》开发

前言:

本篇文章主题内容是讲述关于django自身携带的后台管理数据系统的使用,也可以利用这点实现先后端分离,就是不同与上一节的前后端不分离(html文件写在templates里面。)当然,这也需要我们更加地了解路由的配置。这篇文章,我们也会介绍admin文件的相关配置的设置。

接下来进入实战内容:

1,先创建我们的项目:

这里内容与上节一致:创建好项目后,改settings里面的时区和语言。

然后创建我们的子应用,我们这里就叫DH,因为我们这里的内容多是利用类似导航栏的东西来操作数据库,所以不妨叫他DH。创建完记得在settings里面去给我们的应用名进行注册。

指令1:python manage.py startapp DH

2,创建项目完,我们来创建我们的数据库

(逻辑还是,先创建一个类,然后通过类的元素来定义表的元素。)

类在我们应用的models里面写哦:----相关元素有导航名称和导航地址,显示是否--这个与布尔值挂钩。

from django.db import models# Create your models here.
class DH_data(models.Model):dh_name=models.CharField(max_length=200,verbose_name='导航名称')dh_url=models.CharField(max_length=200,verbose_name='导航地址')is_shown=models.BooleanField(default=True,verbose_name='是否显示')class Meta():db_table="DH_table"verbose_name="导航信息"verbose_name_plural=verbose_namedef __str__(self):return f"{self.dh_name,self.dh_url}"

代码基本上跟我们上节课的代码类型相似。唯一不同的就是布尔值的相关代码,大家可以参考一下上面的,default默认值是True,后边的verbose_name都是我们后台管理显示名称。因为我们前面的配置里面修改了语言么。

然后:

指令2:python manage.py makemigrations DH

指令3:python manage.py migrate

本接口我们的开发是前后端分离式开发,那么我们的数据获取就不是依靠render返回了,而是通过一些接口来返回。

那我们来介绍一下什么接口,怎么传输文件吧,

3,接口传输数据

就像是我们的www.baidu.com这个网址,我们访问的话,给我们的是一个html文件,

但是如果我们是带接口地去访问,里面则是附带着json文件,里面附带这我们页面需要展示的信息,这就是我们接口的作用,这里我们也需要利用接口来实现这一功能,那就必不可少地需要使用json的一些格式和语言了。

在view里面操作:

先利用django里面http模块里面的Jsonreponse工具,这个是django自带的,很方便

from django.http import JsonResponse
# JsonResponse(data,safe)  data:需要返还的数据,列表或者字典。  safe默认值是True,只能返回字典的格式,我们需要修改成False,这样字典和列表都可以返回了。

为了做示范我们将之前的个性网站开发的html文件拿来使用:

而我们想要返回的数据,就是我们页面的导航栏的信息:

我们就把这俩个利用接口形式返给他吧。

view里面写我们需要传输的数据:

from django.http import JsonResponse# 使用json格式返回数据
# Create your views here.
def dh_data(request):# JsonResponse(data,safe)  data:需要返还的数据,列表或者字典。  safe默认值是True,只能返回字典的格式,我们需要修改成False,这样字典和列表都可以返回了。return JsonResponse([{'dh_name':'首页','dh_url':'https://lc1.hunanhaocheng.com/html/hnhc-bing-es/index.html?msclkid=b9bf0d23cde4196f28d36afe97bf2679&u=1668'},{'dh_name':'热门景点','dh_url':'https://x1.haochengguolv.com/html/glv-bing-gz/index.html?msclkid=a0bcea423d951df40a038d9f67ce3b07'},],safe=False)

那我们得先有个网址来放我们的网页:

那我们就规定我们的访问地址为:127.0.0.1:8080/data/dh         ---后面是1,2级路由哦!

那我们现在就去处理路由的问题:

urls里面代码如下,二级路由在外面的dh.urls(指的是在)里面写。

from django.contrib import admin
from django.urls import path,includeurlpatterns = [path('admin/', admin.site.urls),path('data/', include('DH.urls')),]

而在我们的dh.urls里面外面又需要返回我们的values里面的dh_data,那外面如下操作:

都是熟悉的操作,那接下来是启动后端端口:
指令4:python manage.py runserver 8080

跑完给我们个这个                                         ,我们在后面接上data/dh就可以访问我们view里面要传输的数据了。

这样后端数据传输就没有问题了,那我们现在来看看,前端怎样访问后端,

4,前端访问后端

方式:Ajax   

书写位置,js文件或者html的script里面

步骤:
1,新建Ajax对象:

    let xhr=new XMLHttpRequest()

2,设置请求方式以及请求地址:
xhr.open('get','http://127.0.0.1:8080/data/dh')                          ---get是请求方式,后面接网址。
3,发送请求

xhr.send()

4,判断请求是否成功:

    xhr.onreadystatechange=function(){

      // 满足该条件才是请求成功并且成功拿到数据

      if(xhr.readyState==4 && xhr.status==200){

        console.log(xhr.resaponse)

      }

    }

执行上述代码后出现了CORS报错类型:  --同源策略

同源:协议,域名(IP) 端口号一致

浏览器因为你违法了该协议,所以不展示你拿到的信息;我们前端协议是file,后端是http所以不响应。

5,应对方法:

处理跨域:

跨域是一个浏览器安全策略,用于防止恶意网站通过 JavaScript 代码访问来自其他网站的资源。同源策 略要求网页只能访问与其来源相同的资源,即具有相同的协议(如http或https)、域名和端口号。 例如,假设你的网站位于 https://www.example.com,如果你在 JavaScript 中尝试通过 XMLHttpRequest请求 https://www.google.com 的数据,这就是一个跨域请求,因为域名不同。 跨域请求默认会被浏览器阻止,因为这可能会导致安全问题

1,安装处理跨域的库:

pip install django-cors-headers

2,在settings设置里完成该库的注册和配置

中间键里面的配置:

'corsheaders.middleware.CorsMiddleware','django.middleware.common.CommonMiddleware',

固定写法,直接写就好了。

最后:新增:CORS_ALLOW_ALL_ORIGINS = True

这个一个类似信物的东西,让浏览器默认识别为可执行或可接受的对象。

处理完这个跨域后,我们在html里面console.log就可以拿到我们所需要的东西了。

因为是json文件,所以前面有给我们自动转的码。\u9996等。

6,前端应用后端传输的数据。

因为我们转数据的格式是json,那我们现在需要修改其形式,以供我们使用。

转换方式:             ---将json格式转成数组的格式,用于我们的遍历。

JSON.parse(需要转变格式的数据)

在之前的实战中,我们用循环遍历去接收数组里面的数据,也要注意我们的需要是a标签里面的内容。

那就不得不考虑,是往一个固定的格式里面去填塞内容了。

遍历方式:

内容:

那现在我们按照格式填内容:

这就完成了我们的a标签格式,那现在我们把str塞进item-box盒子里面,或者对里面的内容进行修改;

(1)获取装导航的盒子:

    let box = document.querySelector('.item-box')

(2)对.item-box里面内容进行拼接:

box.innerHTML = 拼接好的字符串      ----这里是我们的str

现在只需要把拼接好的内容放在box.innerHTML里面就好了;

box.innerHTML=str

5,django后台管理系统处理数据库:

这个后台管理系统是我们django自带的,位置就在我们的urls里面的这个:

这个请求路径是我们很棒的处理数据库的地址:

http://127.0.0.1:8080/admin

访问后就进入了这个页面:         用户名和密码需要我们单独设置:代码在下面:

设置指令:
1.终端执行创建账号的指令

python manage.py createsuperuser

2,填写账号:

比如:admin

3,填写密码:

比如:123456@qq.com

这个做了加密处理,你看不见写了什么,注意点就好;

创建完登录后,可以看到如下页面,但主力,这里我们的数据库没有显示在里面

具体原因是:我们没有注册数据库的模型:

注册数据库的模型


在子应用的admin文件里面注册:

(1),导入创建的模型:

from .models import 模型名

(2),导入admin
from django.contrib import admin        --这个一般自带,不需要写
(3)注册模型:
admin.site.register(模型名)


现在我们的数据库增删改查都可以在DH这个模块里面进行了;

做个示范:

添加之后刷新数据库,看看里面:

增删改查都可以在这里面简便化进行。不做展示。

前端调用数据库内容:

现在再循环遍历,再次从里面获取

for循环查看里面内容:

现在完全变成字典格式了。只要我们先创个空列表,然后把这些字典放进去就好了:

因为我们需要的格式酒店列表嵌套字典的格式:

这样就直接完毕了:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词