真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

stark組件4_pop功能-創(chuàng)新互聯(lián)

pop功能模仿Django-Admin中添加頁(yè)面的pop功能

為汕城等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及汕城網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站建設(shè)、汕城網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

stark組件4_pop功能

pop功能需要實(shí)現(xiàn)的功能和問(wèn)題

1 如何在一對(duì)多和多對(duì)多字段后渲染 +
2 +對(duì)應(yīng)的跳轉(zhuǎn)路徑是什么
3 保存添加記錄同時(shí),將原頁(yè)面的對(duì)應(yīng)的下拉菜單中添加該記錄

具體實(shí)現(xiàn)(只在添加頁(yè)面實(shí)現(xiàn)功能)

添加頁(yè)面代碼邏輯(包含pop功能):

此處請(qǐng)參考ModleForm相關(guān)內(nèi)容

def add(self, request):
    #ModelFormDemo等同于得到了DemoModelForm這個(gè)類
    ModelFormDemo = self.get_modelForm()
    #實(shí)例化出來(lái)一個(gè)form對(duì)象
    form = ModelFormDemo()

    #通過(guò)循環(huán)判斷沒(méi)有個(gè)字段類是否是判斷form對(duì)象是否是一對(duì)多或多對(duì)多,并做相應(yīng)處理
    for bfield in form:
        from django.forms.models import ModelChoiceField
        #ModelMultipleChoiceField繼承ModelChoiceField,因此一對(duì)多和多對(duì)多都是ModelChoiceField
        #如果當(dāng)前對(duì)象是一對(duì)多或多對(duì)多
        if isinstance(bfield.field, ModelChoiceField):
            #添加一個(gè)屬性,用于在模板中判斷是否渲染頁(yè)面時(shí)加上加號(hào)
            bfield.is_pop = True
            # print("====>",bfield.field.queryset.model)
            # == == > < class 'app01.models.Publish'>
            # == == > < class 'app01.models.Author'>
            #獲取app名字和關(guān)聯(lián)表的名稱
            related_model_name = bfield.field.queryset.model._meta.model_name
            related_app_lable = bfield.field.queryset.model._meta.app_label
            #利用反向解析找到url
            _url = reverse("%s_%s_add" % (related_app_lable, related_model_name))
            # print(_url)
            # / stark / app01 / publish / add /
            # / stark / app01 / author / add /
            #構(gòu)建url值,這個(gè)值要傳給模板用
            bfield.url = _url+"?pop_res_id=id_%s" %bfield.name
            #bfield.url == > / stark / app01 / author / add /?pop_res_id = id_authors

    # 如果收到POST請(qǐng)求則修改數(shù)據(jù)
    # 這里有兩種情況,一種是通過(guò)pop添加數(shù)據(jù),此時(shí)url帶有pop_res_id,一種是在查看頁(yè)面點(diǎn)添加,url里是沒(méi)有pop_res_id的
    if request.method == "POST":
        #將request.POST放到form中進(jìn)行校驗(yàn)
        form = ModelFormDemo(request.POST)
        if form.is_valid():
            obj = form.save()
            # print("obj==>", obj)
            #obj==> Django 第二版
            # print("type==>", type(obj))
            #type==> 

            #獲?。╬op功能提交的post請(qǐng)求時(shí))url中的pop_res_id值
            pop_res_id = request.GET.get("pop_res_id")
            #如果此處有值就將數(shù)據(jù)返回給pop.html頁(yè)面
            if pop_res_id:
                res = {"pk": obj.pk, "text": str(obj), "pop_res_id": pop_res_id}
                return render(request, "pop.html", {"res": res})

            else: #如果此次無(wú)值則直接跳轉(zhuǎn)到相應(yīng)頁(yè)面
                return redirect(self.get_list_url())
                # return redirect("/stark/app01/book/")

    return render(request, "add.html", locals())

添加頁(yè)面渲染(form.html)

{% csrf_token %} {% for field in form %}
{{ field }} {{ field.errors.0 }} {% if field.is_pop %} + {% endif %}
{% endfor %}

pop頁(yè)面




    
    
    
    Title






add頁(yè)面body示例代碼(是pop頁(yè)面的父頁(yè)面)



添加數(shù)據(jù)

{% include 'form.html' %}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)頁(yè)題目:stark組件4_pop功能-創(chuàng)新互聯(lián)
文章地址:http://weahome.cn/article/pgsep.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部