快捷搜索:  汽车  科技

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)点击增加,为订单附件管理表添加一个文件,此时看到的就是fields里的字段:重新运行服务,访问127.0.0.1:8000/admin/,登录后就能看到以下界面了此时里面啥都没有,稍后我们进行admin.py的配置。通过在attachMana目录下的admin.py中添加如下代码:from django.contrib import admin from .models import AttachModel class AttachModelAdmin(admin.ModelAdmin): list_display = ('orderNumber' 'custId' 'fileName' 'owner' 'create_time') fields = ('orderNumber' '

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)(1)

9、创建超级用户

在与manage.py同级,运行如下命令:

python manage.py createsuperuser

然后输入用户名,密码

然后重新启动服务,访问127.0.0.1:8000/admin/,出现django后台管理登录界面

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)(2)

输入刚才创建的用户名及密码后进行登录

此时里面啥都没有,稍后我们进行admin.py的配置。

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)(3)

10、配置admin.py

通过在attachMana目录下的admin.py中添加如下代码:

from django.contrib import admin from .models import AttachModel class AttachModelAdmin(admin.ModelAdmin): list_display = ('orderNumber' 'custId' 'fileName' 'owner' 'create_time') fields = ('orderNumber' 'custId' 'fileObj') admin.site.register(AttachModel AttachModelAdmin)

其中list_sisplay是元组或列表,是订单附件管理表中能看到的字段,而fields则是在添加数据时显示的字段。

重新运行服务,访问127.0.0.1:8000/admin/,登录后就能看到以下界面了

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)(4)

点击增加,为订单附件管理表添加一个文件,此时看到的就是fields里的字段:

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)(5)

随便添加了一个文件并保存,在项目的upload/2020/09/11/目录里就有了刚上传的文件。

但在管理界面中发现没有文件名及上传者,接下来我们需要修改admin.py

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)(6)

为admin.py添加一个save_model方法:

def save_model(self request obj form change): obj.owner = request.user obj.fileName = request.FILES['fileObj'].name return super(AttachModelAdmin self).save_model(request obj form change)

这样在更新前就会得到当前用户名与文件名。

如果在admin后台将数据删除,只是删除掉表格中的数据,文件并不会删除。

11、编制index.html,使访问127.0.0.1:8000时就路由到index.html

首先在template目录下创建一个index.html文件:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>订单附件查询</title> </head> <body> 这是index.html的内容 </body> </html>

urls.py维持原来的不变。

改变views.py的代码为:

class Index(View): def get(self request): return render(request 'index.html' context={})

接着还需要修改settings.py中的关于模板的设置:

TEMPLATES 'DIRS': [os.path.join(BASE_DIR 'template')]

重启服务后,再次访问127.0.0.1:8000,将是index.html的内容,而非原来的HttpResponse的内容。

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)(7)

12、编制index.html界面

界面分上下两部分,上面是一个表单,用来输入要搜索的条件,下面是表格,用来展示数据,由于不擅长前端,并且是公司内部使用,也就没去搞美化了,只在网上去找了个通用的表格样式。

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>订单附件查询</title> <link rel="stylesheet" href="/static/css/table.css"> </head> <body> <form action="search/" method="post"> 订单号:<input type="text" name="orderNumber"> 顾客编号:<input type="text" name="custId"> 文件名:<input type="text" name="fileName"> <input type="checkbox" name="onDate"> 从 <input type="date" name="startDate"> 到 <input type="date" name="endDate"> <input type="submit" value="查询"> </form> <hr> <table class="data-table"> <tr><th>订单号</th><th>顾客编号</th><th>文件名</th><th>上传者</th><th>上传日期</th><th>操作</th></tr> {% for row_data in datas %} <tr> <td>{{ row_data.orderNumber }}</td> <td>{{ row_data.custId }}</td> <td>{{ row_data.fileName }}</td> <td>{{ row_data.owner }}</td> <td>{{ create_time }}</td> <td>下载</td> </tr> {% endfor %} </table> </body> </html>

界面如下:

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)(8)

13、编制查询功能

在urls.py中添加新的路由:

path('search/' views.Search.as_view() name='search')

在views.py中添加如下代码:

class Search(View): def post(self request): return render(request 'index.html' context={})

我们重启服务,看看点击查询按钮会不会出错,如果不出错,那再接着编写Search的代码。

结果出现了CSRF验证失败。

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)(9)

在index.html的from中间添加如下代码:

{% csrf_token %}

再次点击查询按钮时,网页可正常跳转,并未出错。不过我再次点击查询时就出现错误了,url会变为127.0.0.1:8000/search/search/,我们修改form中的action,由原来的”search/”改为”/search/”然后就正常了。

通畅以后,我们就可以编写search代码了。

from attachMana.models import AttachModel class Search(View): def post(self request): params = {} params['orderNumber'] = request.POST.get('orderNumber') params['custId'] = request.POST.get('custId') params['fileName'] = request.POST.get('fileName') params['onDate'] = request.POST.get('onDate') params['startDate'] = request.POST.get('startDate') params['endDate'] = request.POST.get('endDate') if params['onDate']: # 如果有勾选日期前面的checkbox,表示启用日期查询 datas = AttachModel.objects.filter(orderNumber__contains=params['orderNumber']).filter(orderNumber__contains=params['custId']).filter(orderNumber__contains=params['fileName']).filter(create_time__range=(params['startDate'] params['endDate']))[:100] else: datas = AttachModel.objects.filter(orderNumber__contains=params['orderNumber']).filter(orderNumber__contains=params['custId']).filter(orderNumber__contains=params['fileName'])[:100] return render(request 'index.html' context={'datas':datas})

由于对提交的post数据验证还不熟悉,所以暂未设计验证。

重启服务后,现在点击查询就能搜索出数据并且放置到前端页面的表格中了。

django前后端分离创建用户接口(用Django设计简易订单附件管理系统-3)(10)

猜您喜欢: