当前位置: 首页 > wzjs >正文

网页制作与网站建设实验报告wordpress 收录

网页制作与网站建设实验报告,wordpress 收录,太原在建,网络销售怎么找客源1. 项目结构 myproject/ ├── myproject/ │ ├── settings.py │ ├── urls.py │ └── ... ├── myapp/ │ ├── templates/ │ │ └── upload.html │ ├── views.py │ ├── urls.py │ └── ... └── media/ # 手动创…

1. 项目结构

myproject/
├── myproject/
│   ├── settings.py
│   ├── urls.py
│   └── ...
├── myapp/
│   ├── templates/
│   │   └── upload.html
│   ├── views.py
│   ├── urls.py
│   └── ...
└── media/          # 手动创建此目录

2. 配置Django设置(settings.py

# settings.py
import osINSTALLED_APPS = ['myapp',  # 确保应用已注册# ...
]MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')# 允许大文件上传(可选)
DATA_UPLOAD_MAX_MEMORY_SIZE = 52428800  # 50MB

3. 路由配置

项目路由(myproject/urls.py
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import staticurlpatterns = [path('', include('myapp.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
应用路由(myapp/urls.py
from django.urls import path
from . import viewsurlpatterns = [path('', views.upload_view, name='upload'),path('upload/', views.file_upload, name='file_upload'),
]

4. 视图逻辑(myapp/views.py

from django.shortcuts import render
from django.http import JsonResponse
from django.conf import settings
from django.views.decorators.csrf import csrf_exempt
import osdef upload_view(request):return render(request, 'upload.html')@csrf_exempt  # 临时禁用CSRF(生产环境需修复)
def file_upload(request):if request.method == 'POST' and request.FILES.get('file'):uploaded_file = request.FILES['file']save_path = os.path.join(settings.MEDIA_ROOT, uploaded_file.name)# 分块写入文件with open(save_path, 'wb+') as destination:for chunk in uploaded_file.chunks():destination.write(chunk)return JsonResponse({'status': 'success','filename': uploaded_file.name})return JsonResponse({'status': 'error'}, status=400)

5. 前端模板(myapp/templates/upload.html

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><!-- Bootstrap 5 --><link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet"><title>文件上传</title>
</head>
<body><div class="container mt-5" style="max-width: 600px;"><h2 class="mb-4">文件上传演示</h2><!-- 文件选择 --><div class="mb-3"><input type="file" class="form-control" id="fileInput"></div><!-- 进度条 --><div class="progress mb-3" style="height: 25px; display: none;" id="progressContainer"><div id="progressBar" class="progress-bar progress-bar-striped" role="progressbar" style="width: 0%">0%</div></div><!-- 状态提示 --><div id="statusMessage"></div><!-- 上传按钮 --><button class="btn btn-primary" onclick="startUpload()">开始上传</button></div><!-- 依赖库 --><script src="https://code.jquery.com/jquery-3.6.0.min.js"></script><script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script><script>function startUpload() {const fileInput = document.getElementById('fileInput');const file = fileInput.files[0];if (!file) {showMessage('请先选择文件!', 'danger');return;}const formData = new FormData();formData.append('file', file);// 显示进度条$('#progressContainer').show();$.ajax({url: '/upload/',type: 'POST',data: formData,contentType: false,    // 必须设置processData: false,  // 必须设置xhr: function() {const xhr = new window.XMLHttpRequest();// 进度事件监听xhr.upload.addEventListener('progress', function(evt) {if (evt.lengthComputable) {const percent = Math.round((evt.loaded / evt.total) * 100);updateProgress(percent);}}, false);return xhr;},success: function(response) {showMessage(`文件 ${response.filename} 上传成功!`, 'success');resetUI();},error: function(xhr) {showMessage('上传失败: ' + (xhr.responseJSON?.status || '服务器错误'), 'danger');resetUI();}});}function updateProgress(percent) {$('#progressBar').css('width', percent + '%').text(percent + '%');}function showMessage(text, type) {const alertClass = `alert alert-${type} alert-dismissible fade show`;$('#statusMessage').html(`<div class="${alertClass}" role="alert">${text}<button type="button" class="btn-close" data-bs-dismiss="alert"></button></div>`);}function resetUI() {setTimeout(() => {$('#progressContainer').hide();updateProgress(0);}, 1500);}</script>
</body>
</html>

运行 HTML


6. 运行步骤

创建媒体目录

mkdir media

启动开发服务器

  1. python manage.py runserver
  2. 访问 http://localhost:8000 测试上传功能

关键功能说明

  1. 进度条实现
    • 使用XMLHttpRequest的progress事件监听上传进度
    • 动态更新Bootstrap进度条的宽度和文本
  1. 安全增强(生产环境必做):
    • 移除@csrf_exempt装饰器
    • 在前端添加CSRF Token:
// 在AJAX请求中添加headers
headers: {'X-CSRFToken': document.querySelector('[name=csrfmiddlewaretoken]').value
},
  1. 文件处理
    • 使用file.chunks()分块处理大文件
    • 保存到MEDIA_ROOT指定目录
  1. 用户体验优化
    • 上传完成后的自动状态重置
    • 可关闭的Bootstrap提示组件
    • 进度条动画效果(条纹动画)

常见问题解决

  1. 进度条不更新
    • 检查浏览器控制台是否有CORS错误
    • 确认xhr.upload.addEventListener正确绑定
  1. 文件保存失败
    • 确保MEDIA_ROOT目录存在且有写入权限
    • 检查Django的settings.py配置
  1. CSRF验证失败
    • 在生产环境中务必处理CSRF Token
    • 在模板中添加{% csrf_token %}

通过以上步骤,您可以在Django中实现一个带Bootstrap进度条的文件上传功能,既保证基本功能又具备良好的用户体验。


文章转载自:

http://qzKs7kFp.ntqnt.cn
http://qTgPMIGw.ntqnt.cn
http://sNAtN0vm.ntqnt.cn
http://RY8uN9oi.ntqnt.cn
http://tRiPUqTz.ntqnt.cn
http://GGQHZjys.ntqnt.cn
http://uRdA77Lk.ntqnt.cn
http://4hg2RCdK.ntqnt.cn
http://QNipad2J.ntqnt.cn
http://0K45kucs.ntqnt.cn
http://wvCzx6Yb.ntqnt.cn
http://IdBgkazg.ntqnt.cn
http://wcekc1Z4.ntqnt.cn
http://el8wRXAV.ntqnt.cn
http://dWzhsMeR.ntqnt.cn
http://HPnSvGTY.ntqnt.cn
http://5WuaAK2S.ntqnt.cn
http://xIzznOIW.ntqnt.cn
http://SPLw1S46.ntqnt.cn
http://7TIom91r.ntqnt.cn
http://MH2WrZdf.ntqnt.cn
http://pglOZ08T.ntqnt.cn
http://kl2QRY1i.ntqnt.cn
http://Yf4isfKV.ntqnt.cn
http://BZrbLslQ.ntqnt.cn
http://zXFYZTUE.ntqnt.cn
http://CfsG0M8q.ntqnt.cn
http://wHYc4Les.ntqnt.cn
http://Wgs4fq9m.ntqnt.cn
http://lO6SOO61.ntqnt.cn
http://www.dtcms.com/wzjs/633087.html

相关文章:

  • 莆田市秀屿区建设局网站广州网站建设推广公司有哪些
  • 教育网站模板下载注册外贸公司需要多少钱
  • 做网站设计制作的公司企业网站属于下面哪种媒体类型
  • 基于thinkphp网站制作专门做2次元图片的网站
  • 手机怎么上wap网站杭州鼎易科技做网站太坑
  • 微信制作网站开发mvc 门户网站开发框架
  • 阿里巴巴国际网站建设平台网站建设设计
  • 做海淘的网站要哪些证在县城做团购网站
  • 南山网站建设公司wordpress 屏蔽特定国家ip
  • 上海免费网站建设模板推荐seo搜索引擎优化步骤
  • linux网站开发软件网站开发 阿里
  • 广州火车站国家企业信息填报系统登录
  • 可视化的做网站的app简洁好看的网站
  • 网站用词精准性网站被挂黑链排名降权
  • 自己做网站还是开通阿里巴巴诚信通深圳网站建设ln12345
  • 微网站建设晋江小学网站建设
  • 站长之家seo工具包自已怎样网站
  • 网站建设学习资料目前做汽配的网站有哪些
  • php做网站界面代码下载好的网站模板怎么用
  • 花都网站建设网页设计开发一个企业官网多少钱
  • 优质网站的衡量标准如何查询个人名下企业
  • 网站建设的图片鞍山建设信息网站
  • 长治网站制作服务电商推广都有哪些诀窍
  • html电子商务网站模版wordpress图片输出
  • 个人网站开发总结文档网络推广与营销
  • 做电影网站会不会侵权一个空间两个php网站
  • 织梦修改网站背景颜色ui设计发展前景及未来
  • 做博客网站什么空间好成都小企业网站设计
  • 设计好看的网站网页设计怎样设置图片大小
  • 网站上传图片加水印网站默认主页名