提问人:Manpreet Ahluwalia 提问时间:3/16/2017 更新时间:3/16/2017 访问量:619
客户端验证在 django 中不起作用。
Client Side Validation not working in django.
问:
**我是 Django 和 jQuery 的新手。我希望在我的 django 项目中进行客户端验证。这个简单的项目是上传文件并显示内容。我目前只是在检查文件字段是否为空,但它不起作用。
此外,我想添加代码来验证文件,以便它只能上传.txt和图像文件,并且文件的最大大小不得超过 500KB。如何在 .js 文件中添加这些验证?
模板
{% load staticfiles %}
<link rel="stylesheet" type="text/css" href="{% static 'FormStyle.css'%}"/>
<script type = 'text/javascript' href="{% static 'validateForm.js' %}" >
</script>
<div class = "formArea">
<div class = "fileForm">
<form enctype="multipart/form-data" method="post"> {% csrf_token %}
<div class = "formFields">
<label for = "file"> {{ form.file.label }} </label>
{{ form.file }}
{{ form.file.errors }}
</div>
<div class = "formFields">
<input type="submit" value="Submit">
</div>
</form>
</div>
</div
validateForm.js
$(document).ready(function() {
$('#form').validate({
rules: {
file: {
required: true
}
},
messages: {
file: {
required: 'Please Upload a File!'
}
}
});
});
Form.py
from django import forms
class fileForm(forms.Form):
file = forms.FileField(label = 'Upload File' )
Views.py
from django.shortcuts import render_to_response, HttpResponse
from .forms import fileForm
def uploadFile(request):
if(request.method == 'POST'):
form = fileForm(request.POST, request.FILES)
if(form.is_valid()):
file = request.FILES['file']
fileName = file.name
# file.size returns file size in Bytes
fileSize = file.size
extension = fileName[fileName.index('.'):]
return HttpResponse(file, content_type='text/plain')
else:
form = fileForm()
return render_to_response('UploadForm.html', {'form': form})
答:
0赞
Mubariz Feyziyev
3/16/2017
#1
首先,您必须在 div 标签后添加此行。
<script type = 'text/javascript' href="{% static 'validateForm.js' %}" >
我建议您创建 blockjs 并在此处添加您的 js 文件
请阅读此内容以获取更多信息
https://docs.djangoproject.com/en/1.10/ref/templates/language/#template-inheritance
评论
0赞
Mubariz Feyziyev
3/16/2017
我希望你已经添加了这个链接:cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/... 或 cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.16.0/...
0赞
Manpreet Ahluwalia
3/16/2017
有点知道你想建议什么。@mubariz 我刚刚安装了 jQuery 验证库 (django-parsley)。现在它显示必填字段的默认错误消息。“此字段为必填项”。它没有显示我在js文件中添加的消息。
0赞
Mubariz Feyziyev
3/16/2017
对于更改错误消息,请尝试以下脚本: P.S:如果问题已解决,请标记“此答案有用”:)<script> jQuery.extend(jQuery.validator.messages, { required: "Please Upload a File!", }); </script>
0赞
Mubariz Feyziyev
3/16/2017
不能:)你在哪里写的?
0赞
Mubariz Feyziyev
3/16/2017
$('#formFile').validate({ rules: { file: "required" }, });
像这样编辑你的代码,并将 id=“formFile” 添加到 <form> 所以:<form id="formFile" enctype="multipart/form-data" method="post"> {% csrf_token %}
下一个:将密码与前端或后端匹配?
评论