Python 자동화 모델 form 과 원생 ajax

모델 폼 검증
`views.py`
from django.shortcuts import render,HttpResponse
from app01 import models

from django import forms
from django.forms import fields as Ffields
from django.forms import widgets as Fwidgets
class UserInfoModelForm(forms.ModelForm):

    is_rmb = Ffields.CharField(widget=Fwidgets.CheckboxInput())

    class Meta:
        model = models.UserInfo
        fields = '__all__'
        # fields =  ['username','email']
        # exclude = ['username']

모델 폼 수정
views.py
def user_edit(request, nid):
    #     id       
    #           
    if request.method == "GET":
        user_obj = models.UserInfo.objects.filter(id=nid).first()
        mf = UserInfoModelForm(instance=user_obj) //     
        return render(request,'user_edit.html',{'mf': mf, 'nid': nid})
    elif request.method == 'POST':
        user_obj = models.UserInfo.objects.filter(id=nid).first()
        mf = UserInfoModelForm(request.POST,instance=user_obj) //    
        if mf.is_valid():

            mf.save()
        else:
            print(mf.errors.as_json())
        return render(request,'user_edit.html',{'mf': mf, 'nid': nid})
views.py
def index(request):
    if request.method == "GET":
        obj = UserInfoModelForm()
        return render(request,'index.html',{'obj': obj})
    elif request.method == "POST":
        obj = UserInfoModelForm(request.POST)
        if obj.is_valid():
            # obj.save()
            instance = obj.save(False) //     
            instance.save()            //      
            obj.save_m2m()             //      
            
            

form 폼 초기 화 는 form 인 스 턴 스 에 추가 initial 해 야 합 니 다. 예 를 들 어 obj = UserFrom (initial = {'name': 'wushi'}), initial 값 은 사전 입 니 다.
modelform 총화
1.   HTML  :class Meta: ...
2. mf = xxxModelForm(instance=ModelObj)
3.      , is_rmb = Ffields.CharField(widget=Fwidgets.CheckboxInput())
4.      is_valid() ->     ...
5.  mf.save()
    #  
    instance = mf.save(False)
    instance.save()
    mf.save_m2m()

원생 ajax 백 엔 드 에 데이터 제출
        function Ajax1(){
            var xhr = getXHR();
            //var xhr = new XMLHttpRequest();
            xhr.open('POST', '/ajax_json/',true);
            xhr.onreadystatechange = function(){
                if(xhr.readyState == 4){
                    //     
                    var obj = JSON.parse(xhr.responseText);
                    console.log(obj);
                }
            };
            xhr.setRequestHeader('k1','v1');
            xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset-UTF-8'); //          ,  django      
            xhr.send("name=root;pwd=123");
        }

ajax 호 환 IE
    function getXHR(){
        var xhr = null;
        if(XMLHttpRequest){
            xhr = new XMLHttpRequest();
        }else{
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return xhr;

    }

가짜 ajax, ifram 을 통 해 데이터 전송
        function sumitForm(){
            $('#ifm1').load(function(){
                var text = $('#ifm1').contents().find('body').text();
                var obj = JSON.parse(text);
            })
        }

ifram 이 받 은 데 이 터 는 ifram 태그 가 존재 하 는 것 이 아니 라 document 입 니 다. 즉, 웹 문서 이기 때문에 load 이 벤트 를 연결 하여 불 러 온 후에 값 을 가 져 올 수 있 습 니 다.
다음으로 전송:https://www.cnblogs.com/wspblog/p/6360487.html

좋은 웹페이지 즐겨찾기