我是一個(gè)django新手,想寫一個(gè)省市的二級(jí)聯(lián)動(dòng),結(jié)果在網(wǎng)上找了N久,要么是不全,要么是太復(fù)雜看不懂,最終實(shí)現(xiàn)了二級(jí)聯(lián)動(dòng),分享給django web開發(fā)新手。
成都創(chuàng)新互聯(lián)公司服務(wù)項(xiàng)目包括隆化網(wǎng)站建設(shè)、隆化網(wǎng)站制作、隆化網(wǎng)頁制作以及隆化網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,隆化網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到隆化省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
參考博客http://sarlmolapple.is-programmer.com/posts/25844.html文中部分代碼為該博客中復(fù)制
第一步:創(chuàng)建project和app這里就不寫了,相信只要是剛開始接觸django的都能知道如何創(chuàng)建,我這里的ProjectName是testccc,AppName是app
第二步:創(chuàng)建model(app/models.py)并插入數(shù)據(jù),插入數(shù)據(jù)就不啰嗦了
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)
第三步:創(chuàng)建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級(jí)聯(lián)動(dòng),在city中也添加onChange參數(shù)指定就jquery函數(shù)
第四步:創(chuàng)建模版(app/templates/test.html)
`form`
第五步:創(chuàng)建view函數(shù)(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())
第六步:創(chuàng)建url (usrs.py)
urlpatterns = patterns('', #由于在html模版中調(diào)用了靜態(tài)jquery.js文件,所以首先需要在url中指定js靜態(tài)文件的路徑,這個(gè)路徑也可以用來調(diào)用css和img文件 url(r'^js/(?P.*)$', 'django.views.static.serve', {'document_root': '//root/workspace/testccc/testccc/static/js'}), #js函數(shù)調(diào)用的url url(r'^getcitylist/(.*)$','testccc.app.views.city_list'), url(r'^test/$','testccc.app.views.test'), )
第七步:啟動(dòng)并測試
訪問 http://localhost/test