這期內容當中小編將會給大家?guī)碛嘘P使用Ajax和forms組件怎么實現(xiàn)注冊功能,文章內容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)專注于徐州網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供徐州營銷型網站建設,徐州網站制作、徐州網頁設計、徐州網站官網定制、小程序開發(fā)服務,打造徐州網絡公司原創(chuàng)品牌,更為您提供徐州網站排名全網營銷落地服務。前端HTML
{% load static %} {% get_static_prefix as getstatic %}注冊頁面 注冊新用戶
上面的代碼只是HTML ,而JavaScript在下面實例中
FileReader
FileReader主要用于將文件內容讀入內存,通過一系列異步接口,可以在主線程中訪問本地文件。
使用FileReader對象,web應用程序可以異步的讀取存儲在用戶計算機上的文件(或者原始數(shù)據(jù)緩沖)內容,可以使用File對象或者Blob對象來指定所要處理的文件或數(shù)據(jù)。
設計RegisterForm組件
from django import forms from . import models from django.forms import widgets from django.core.exceptions import NON_FIELD_ERRORS, ValidationError class RegisterForm(forms.Form): nik_name = forms.CharField(max_length=32, widget=widgets.TextInput(attrs={"class":"form-control"}), error_messages={"required":"用戶不能為空"}) email = forms.EmailField(widget=widgets.EmailInput(attrs={"class":"form-control"}), error_messages={"required":"郵箱不能為空", "invalid":"郵箱格式錯誤"}) password = forms.CharField(min_length=5, widget=widgets.PasswordInput(attrs={"class":"form-control"}), error_messages={"required": "密碼不能為空", "min_length":"最小長度5位", } ) repeta_pwd = forms.CharField(widget=widgets.PasswordInput(attrs={"class":"form-control"}), error_messages={"required": "密碼不能為空"}) def clean_nik_name(self): name = self.cleaned_data.get("nik_name") users = models.UserInfo.objects.filter(nik_name=name) if not users: return name else: raise ValidationError("用戶已存在") def clean(self): //全局鉤子 pwd = self.cleaned_data.get("password") repeta_pwd = self.cleaned_data.get("repeta_pwd") if pwd and repeta_pwd: if pwd == repeta_pwd: return self.cleaned_data else: raise ValidationError("兩次密碼不一致") else: return self.cleaned_data
服務器
def post(self,request): reg_response = {"user": None,"error_msg":""} register_form = RegisterForm(request.POST) if register_form.is_valid(): email = request.POST.get("email") nik_name = request.POST.get("nik_name") password = request.POST.get("password") repeta_pwd = request.POST.get("repeta_pwd") valid = request.FILES.get("valid_img") #注意這里使用的request.FILES.get("") if not valid: valid = "avatardir/TIM圖片20171209211626.gif" check_user = models.UserInfo.objects.create_user(username=nik_name,nik_name=nik_name, email=email, password=password, avatar=valid ) # 注意這里保存導數(shù)據(jù)庫中的是圖片路徑,并不是圖片 reg_response = {"user": "user", "error_msg": ""} return HttpResponse(json.dumps(reg_response)) else: reg_response["error_msg"]=register_form.errors return HttpResponse(json.dumps(reg_response))
Model中 Userifor 的img
avatar = models.FileField(upload_to='avatar/', default="/avatar/default.gif", verbose_name="主鍵")
注意:
upload_to :默認把文件夾創(chuàng)建至根目錄下,如創(chuàng)建至指定位置,需要在setting中配置media。
如:希望用戶上傳的文件單獨存儲,在setting中配置,
MEDIA_ROOT= os.path.jion(BASE_DIR,"blog","media") //此時,用戶上傳文件時,先創(chuàng)建并將文件保存至“putImg”文件夾中,“putImg”,然后將“putImg”放至對應的路徑中。 # media 配置 url(r"^media/(?P.*)",sever,{"document_root":setting.MEDIA_ROOT})
配置好上面的url 后,用戶可以訪media 文件夾下面的所有文件
注意:
server ,是從django.views.static import server導入 from . import settings //url中的使用
ajax是一種在無需重新加載整個網頁的情況下,能夠更新部分網頁的技術,可以通過在后臺與服務器進行少量數(shù)據(jù)交換,使網頁實現(xiàn)異步更新。
上述就是小編為大家分享的使用Ajax和forms組件怎么實現(xiàn)注冊功能了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。