Django實(shí)戰(zhàn)項(xiàng)目-在Django中使用Ajax (4)

Django實(shí)戰(zhàn)項(xiàng)目-在Django中使用Ajax (4)

1.ModelForm

ModelForm與之前見到的Form效果一樣英遭,用著跟方便,使用下面方式導(dǎo)入

from django import forms

對(duì)于下面這個(gè)model使用ModelForm與Form的兩種方式

class UserAsk(models.Model):
    name = models.CharField(max_length=20, verbose_name="姓名")
    mobile = models.CharField(max_length=11, verbose_name="手機(jī)號(hào)")
    course_name = models.CharField(max_length=50, verbose_name="課程名稱")
    add_time = models.DateTimeField(default=datetime.now, verbose_name="添加時(shí)間")

    class Meta:
        verbose_name = "用戶咨詢"
        verbose_name_plural = verbose_name

兩種方式中如果model的屬性比較多用第二種會(huì)麻煩很多

class UserAskForms(forms.ModelForm):
    mobile = forms.CharField(required=True,max_length=11, min_length=11)
    class Meta:
        model = UserAsk
        fields = ['name', 'mobile', 'course_name']
class UserAskForms(Form):
    name = forms.CharField(required=True)
    mobile = forms.CharField(required=True, max_length=11, min_length=11)
    course_name = forms.CharField(required=True)

使用方式兩者無異

user_ask_form = UserAskForms(request.POST)
if user_ask_form.is_valid():

2.Ajax的使用

2.1

html中的代碼

 <div class="right companyright">
                <div class="head">我要學(xué)習(xí)</div>
                <form class="rightform" id="jsStayForm" method="post">
                    <div>
                        ![]({% static 'images/rightform1.png' %})
                        <input type="text" name="name" id="companyName" placeholder="名字" maxlength="25"/>
                    </div>
                    <div>
                        ![]({% static 'images/rightform2.png' %})
                        <input type="text" name="mobile" id="companyMobile" placeholder="聯(lián)系電話"/>
                    </div>
                    <div>
                        ![]({% static 'images/rightform3.png' %})
                        <input type="text" name="course_name" id="companyAddress" placeholder="課程名" maxlength="50"/>
                    </div>
                    <p class="error company-tips" id="jsCompanyTips"></p>
                    <input class="btn" type="button" id="jsStayBtn" value="立即咨詢 >"/>
                    <input type='hidden' name='csrfmiddlewaretoken' value='5I2SlleZJOMUX9QbwYLUIAOshdrdpRcy'/>
                    {% csrf_token %}
                </form>
            </div>

view的代碼

class AddUserAskView(View):
    """
       用戶添加咨詢
    """
    def post(self, request):
        user_ask_form = UserAskForms(request.POST)
        if user_ask_form.is_valid():
            user_ask = user_ask_form.save(commit=True)
            return HttpResponse('{"status" : "success"}', content_type='application/json')
        else:
            return HttpResponse('{"status" : "fail", "msg" : "添加出錯(cuò)"}', content_type='application/json')

script代碼

<script>
        $.ajaxSetup({headers: {"X-CSRFToken": '{{ csrf_token }}'}});
        $(function () {
            $('#jsStayBtn').on('click', function () {
                $.ajax({
                    cache: false,
                    type: "POST",
                    url: "{% url 'org:user_ask' %}",
                    data: $('#jsStayForm').serialize(),
                    async: true,
                    success: function (data) {
                        if (data.status == 'success') {
                            $('#jsStayForm')[0].reset();
                            alert("提交成功")
                        } else if (data.status == 'fail') {
                            $('#jsCompanyTips').html(data.msg)
                        }
                    },
                });
            });
        })
    </script>

2.2遇到的問題

1.403 csrf
在html中添加了“{% csrf_token %}”但是依然會(huì)提示403錯(cuò)誤熄驼,看到別人說是由于setting.py中的“MIDDLEWARE”添加了“'django.middleware.csrf.CsrfViewMiddleware',”這個(gè)要加上珠十,為了數(shù)據(jù)安全
在script中需要加上才能避免403錯(cuò)誤

$.ajaxSetup({headers: {"X-CSRFToken": '{{ csrf_token }}'}});

2.無法獲取form里傳的數(shù)據(jù)
我在開發(fā)過程中遇到了無法得到form里面?zhèn)鞯臄?shù)據(jù)冕象,取數(shù)據(jù)是用“$('#jsStayForm').serialize()”,這樣沒有必要對(duì)每一個(gè)參數(shù)都寫一遍

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末昵骤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子变秦,更是在濱河造成了極大的恐慌成榜,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蹦玫,死亡現(xiàn)場(chǎng)離奇詭異赎婚,居然都是意外死亡刘绣,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門挣输,熙熙樓的掌柜王于貴愁眉苦臉地迎上來纬凤,“玉大人,你說我怎么就攤上這事撩嚼⊥J浚” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵完丽,是天一觀的道長恋技。 經(jīng)常有香客問我,道長逻族,這世上最難降的妖魔是什么蜻底? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮聘鳞,結(jié)果婚禮上薄辅,老公的妹妹穿的比我還像新娘。我一直安慰自己抠璃,他們只是感情好站楚,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著鸡典,像睡著了一般源请。 火紅的嫁衣襯著肌膚如雪枪芒。 梳的紋絲不亂的頭發(fā)上彻况,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音舅踪,去河邊找鬼纽甘。 笑死,一個(gè)胖子當(dāng)著我的面吹牛抽碌,可吹牛的內(nèi)容都是我干的悍赢。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼货徙,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼左权!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起痴颊,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤赏迟,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后蠢棱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锌杀,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡甩栈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了糕再。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片量没。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖突想,靈堂內(nèi)的尸體忽然破棺而出殴蹄,到底是詐尸還是另有隱情,我是刑警寧澤猾担,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布饶套,位于F島的核電站,受9級(jí)特大地震影響垒探,放射性物質(zhì)發(fā)生泄漏妓蛮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一圾叼、第九天 我趴在偏房一處隱蔽的房頂上張望蛤克。 院中可真熱鬧,春花似錦夷蚊、人聲如沸构挤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽筋现。三九已至,卻和暖如春箱歧,著一層夾襖步出監(jiān)牢的瞬間矾飞,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來泰國打工呀邢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留洒沦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓价淌,卻偏偏與公主長得像申眼,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蝉衣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容