189 8069 5689

django+jquery实现二级联动-创新互联

我是一个django新手,想写一个省市的二级联动,结果在网上找了N久,要么是不全,要么是太复杂看不懂,最终实现了二级联动,分享给django web开发新手。

创新互联建站是一家集网站建设,扎赉特企业网站建设,扎赉特品牌网站建设,网站定制,扎赉特网站建设报价,网络营销,网络优化,扎赉特网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。

参考博客http://sarlmolapple.is-programmer.com/posts/25844.html文中部分代码为该博客中复制

第一步:创建project和app这里就不写了,相信只要是刚开始接触django的都能知道如何创建,我这里的ProjectName是testccc,AppName是app

第二步:创建model(app/models.py)并插入数据,插入数据就不啰嗦了

from django.db import models
class Province(models.Model):
   provinceName = models.CharField(max_length = 20)
class City(models.Model):
   cityName = models.CharField(max_length = 20)
   provinceID = models.ForeignKey(Province)

第三步:创建form(app/forms.py)

#coding=utf8
from django import forms
from .models import *
provinces = Province.objects.all()
PROVINCE_CHOICES = []
for province in provinces:
    PROVINCE_CHOICES.append([province.id, province.provinceName])
class myForm(forms.Form):
    province = forms.ChoiceField(widget = forms.Select(attrs={'class':'select', 'onChange':'getCityOptions(this.value)'}), choices = PROVINCE_CHOICES, label= u'选择省')
    city = forms.ChoiceField(widget = forms.Select(attrs={'class':'select'}), label = u'选择市')
    #如果需要3级联动,在city中也添加onChange参数指定就jquery函数

第四步:创建模版(app/templates/test.html)



    function getCityOptions(province_id){
        $.ajax({
            type: "GET",
            url: "/getcitylist?provinceID="+province_id,  
            dataType:'json',
            success: function(data,textStatus){
                var citySelect = document.getElementById("id_city");
                for ( var i=citySelect.options.length-1; i>-1; i--){
                    citySelect[i] = null;
                }
                if(data.length > 0) {
                    $("#id_city").show();
                    for(i=0;i

        `form`

第五步:创建view函数(app/views.py)

from django.shortcuts import render_to_response
from django.http import HttpResponse
from testccc.app.models import *
from testccc.app.forms import *
# 1.5以前的版本
from django.utils import simplejson
# 1.5以后的版本
import json
def city_list(request,provinceID):
    city_list = []
    province = request.GET['provinceID']
    citys = City.objects.filter(provinceID = province)
    for city in citys:
        c = {}
        c['label'] = city.cityName
        c['text'] = city.id
        city_list.append(c)
    # 1.5以前的版本
    return HttpResponse(simplejson.dumps(city_list), mimetype='application/json')
    # 1.5以后的版本
    return HttpResponse(json.dumps(city_list), mimetype='application/json')
def test(request):
    form = myForm()
    return render_to_response('test.html',locals())

第六步:创建url (usrs.py)

urlpatterns = patterns('',
    #由于在html模版中调用了静态jquery.js文件,所以首先需要在url中指定js静态文件的路径,这个路径也可以用来调用css和img文件
    url(r'^js/(?P.*)$', 'django.views.static.serve', {'document_root': '//root/workspace/testccc/testccc/static/js'}),
    #js函数调用的url
    url(r'^getcitylist/(.*)$','testccc.app.views.city_list'),
    url(r'^test/$','testccc.app.views.test'),
)

第七步:启动并测试

访问 http://localhost/test

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享名称:django+jquery实现二级联动-创新互联
网页路径:http://cdxtjz.cn/article/dcpejs.html

其他资讯