客户端验证在 django 中不起作用。

Client Side Validation not working in django.

提问人:Manpreet Ahluwalia 提问时间:3/16/2017 更新时间:3/16/2017 访问量:619

问:

**我是 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})
jQuery django 验证客户端

评论


答:

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 %}