当前位置: 首页 > 后端技术 > Python

【邂逅Django】——(3)查看

时间:2023-03-26 11:17:48 Python

馃敟閭傞€匘jango-鍐呭鉁呯1閮ㄥ垎锛氥€愰亣瑙丏jango銆戔€斺€旓紙1锛夊垱寤洪」鐩渽绗?閮ㄥ垎锛氥€愰亣瑙丏jango銆戔€斺€旓紙2锛夋暟鎹簱閰嶇疆馃洜锔廝art3:[MeetDjango]-(3)View馃洜锔廝art4:[MeetDjango]-(4)Formandgeneralview馃洜锔廝art5:[MeetDjango]-(5)鏀硅繘鐣岄潰锛堣嚜瀹氫箟鐣岄潰鍜屾牱寮忥級馃洜锔忕鍏儴鍒嗭細銆愯璇咲jango銆戔€斺€旓紙鍏級鑷畾涔夌鐞嗙晫闈煕狅笍绗竷閮ㄥ垎锛氥€愯璇咲jango銆戔€斺€旓紙涓冿級鑷姩鍖栨祴璇曫煄堝墠瑷€鏈郴鍒楁枃绔犳槸鏍规嵁Django瀹樻柟鏂囨。鏁欑▼鐨勫熀纭€妯℃澘鍋氱殑涓€浜涙敼杩涘拰鍒犻櫎锛屽鍔犱簡涓€浜涙垜鑷繁鐨勮瑙c€傚笇鏈涘ぇ瀹剁湅瀹屾湰绯诲垪鏂囩珷鍚庯紝鑳藉瀵笵jango鏈変竴涓竻鏅扮殑璁よ瘑銆傝矾婕极鍏朵慨杩滃叜锛屾垜灏嗕笂涓嬫眰绱紒Django==瀹樻柟鏂囨。==锛歨ttps://www.djangoproject.com/鉂椻潡鉂楀湪瀛︿範杩囩▼涓紝澶氱湅瀹樻柟鏂囨。鍙互瑙e喅寰堝闂鉂椻潡鉂楁湰鏁欑▼浣跨敤璇楁瓕鏉ョ鐞嗛」鐩幆澧冦€傜浉鍏宠瘲璇嶇殑瀹夎鍜屼娇鐢ㄨ鍙傝€冦€怭ython-铏氭嫙鐜銆戦」鐩惎鍔紝浠庨殧绂诲紑鍙戠幆澧冨紑濮?SegmentFaultSifu椤圭洰鍦板潃锛歨ttps://github.com/CoderBerryRabbit/MeetDjango1.鏌ョ湅姒傝ViewsinDjango鐨勬蹇垫槸銆愬叿鏈夌浉鍚屽姛鑳藉拰妯℃澘鐨勭綉椤甸泦鍚堛€戙€備緥濡傦紝鍦ㄤ竴涓崥瀹㈠簲鐢ㄤ腑锛屽彲鑳戒細鍒涘缓濡備笅瑙嗗浘锛氬崥瀹㈤椤碘€斺€旀樉绀烘渶杩戠殑鍐呭鍐呭璇︽儏椤碘€斺€旇缁嗘樉绀烘煇涓唴瀹逛互骞翠负鍗曚綅鐨勫瓨妗i〉鈥斺€旀樉绀烘墍閫夊勾浠界殑姣忎釜鏈堝瓨妗i〉ofcreatedcontentinmonth-鏄剧ず鍦ㄦ墍閫夋湀浠界殑姣忎竴澶╁垱寤虹殑鍐呭Archivepageinunitofday-鏄剧ず鍦ㄦ墍閫夋棩鏈熷垱寤虹殑鎵€鏈夊唴瀹笴ommentProcessor-鐢ㄤ簬娣诲姞璇勮浠ュ搷搴斿唴瀹瑰湪鎶曠エ搴旂敤绋嬪簭涓紝闇€瑕佷互涓嬭鍥撅細闂绱㈠紩椤甸潰鈥斺€旀樉绀烘渶杩戠殑鍑犱釜鎶曠エ闂璇︽儏椤甸潰鈥斺€旀樉绀轰竴涓姇绁ㄩ棶棰樺拰涓€涓病鏈夌粨鏋滅殑閫夐」鍒楄〃鎶曠エ缁撴灉鎶曠エ澶勭悊绋嬪簭鈥斺€旂敤浜庡搷搴旂敤鎴峰闂鎶曠エ鐨勬搷浣滃湪Django涓紝缃戦〉鍜屽叾浠栧唴瀹归兘鏄粠瑙嗗浘涓淳鐢熷嚭鏉ョ殑銆傛瘡涓鍥句唬琛ㄤ竴涓狿ython鍑芥暟锛堟垨鑰咃紝瀵逛簬鍩轰簬绫荤殑瑙嗗浘锛屼唬琛ㄤ竴涓柟娉曪級銆侱jango浼氭牴鎹敤鎴疯姹傜殑URL閫夋嫨浣跨敤鍝釜瑙嗗浘銆備负浜嗗皢URL涓庤鍥剧浉鍏宠仈锛孌jango浣跨敤URLconfs杩涜閰嶇疆銆俇RLconf灏哢RL鏄犲皠鍒拌鍥俱€備簩銆佺紪鍐欒鍥?polls/views.pyfromdjango.shortcutsimportrenderfromdjango.httpimportHttpResponsedefindex(request):returnHttpResponse("Hello,world.You'reatthepollsindex.")defdetail(request,question_id):returnHttpResponse(f"You'relookingatquestion{question_id}")defresults(request,question_id):response="You'relookingattheresultsofquestion{}"returnHttpResponse(response.format(question_id))defvote(request,question_id):returnHttpResponse("You'revotingonquestion%s."%question_id)涓夈€佹坊鍔爑rl#polls/urls.pyfromdjango.urlsimportpathfrom銆俰mportviewsurlpatterns=[path("",views.index,name="index"),path("/",views.detail,name="detail"),path("/results/",views.results,name="results"),path("/vote/",views.vote,name="vote"),]鍚姩Django寮€鍙戞湇鍔″櫒锛屽彲浠ュ湪娴忚鍣ㄤ腑杈撳叆浠ヤ笅缃戝潃鏌ョ湅锛歩ndex-http://127.0.0.1:8000/polls/detail-http://127.0.0.1:8000/polls/1/results-http://127.0.0.1:8000/polls/1/results/vote-http://127.0.0.1:8000/polls/1/vote/4.鍐欎竴涓湡姝f湁鐢ㄧ殑瑙嗗浘涓烘瘡涓鍥惧仛涓や欢浜嬶細杩斿洖涓€涓寘鍚墍璇锋眰椤甸潰鍐呭鐨凥ttpResponse瀵硅薄锛屾垨鑰呮姏鍑轰竴涓紓甯歌鍥惧彲浠ヤ粠鏁版嵁搴撲腑璇诲彇璁板綍锛屼娇鐢ㄦā鏉垮紩鎿庯紝鎴栬€呭叾浠栧彲浠ュ湪Python涓畬鎴愮殑鎿嶄綔銆?pools/views.pyfromdjango.shortcutsimportrenderfromdjango.httpimportHttpResponsefrom.modelsimportQuestiondefindex(request):latest_question_list=Question.objects.order_by("-pub_date")[:5]杈撳嚭=",".join([q.question_textforqinlatest_question_list])returnHttpResponse(output)defdetail(request,question_id):returnHttpResponse(f"You'relookingatquestion{question_id}")defresults(request,question_id):response="鎮ㄦ鍦ㄦ煡鐪嬮棶棰榹}"returnHttpResponse(response.format(question_id))defvote(request,question_id):returnHttpResponse(f"You'revoteonquestion{question_id}")涔嬪墠鏌ョ湅鐨勭粨鏋滐紝鎮ㄥ彲浠ュ垱寤轰竴浜涢棶棰樻暟鎹€傚惎鍔―jango鏈嶅姟鍣紝鍦ㄦ祻瑙堝櫒涓緭鍏ttp://127.0.0.1:8000/polls/鏌ョ湅銆?.鑷畾涔夋ā鏉筐煂?.1妯℃澘鐩綍璇存槑棣栧厛鍦╬olls鐩綍涓嬪垱寤轰竴涓猼emplates鐩綍銆侱jango浼氬湪杩欎釜鐩綍涓鎵炬ā鏉挎枃浠躲€傚湪settings.py閰嶇疆鏂囦欢涓紝TEMPLATES閰嶇疆椤规弿杩颁簡Django濡備綍鍔犺浇鍜屾覆鏌撴ā鏉裤€侱jangoTemplates鍚庣榛樿璁剧疆涓篈PP_DIRS璁剧疆涓篢rue銆傛閫夐」灏嗕娇DjangoTemplates鍦ㄦ瘡涓狪NSTALLED_APPS鏂囦欢澶逛笅鏌ユ壘妯℃澘瀛愮洰褰曘€傝繖灏辨槸涓轰粈涔圖jango鍙互鍦ㄦ病鏈塂IRS璁剧疆鐨勬儏鍐典笅姝g‘鎵惧埌polls鐨勬ā鏉夸綅缃€傛敞鎰忥細铏界劧鍙互灏嗘ā鏉挎枃浠剁洿鎺ユ斁鍦╬olls/templates鏂囦欢澶逛腑锛堣€屼笉鏄垱寤簆olls瀛愭枃浠跺す锛夛紝浣嗚繖鏍峰仛骞朵笉鏄緢濂姐€侱jango浼氶€夋嫨绗竴涓尮閰嶇殑妯℃澘鏂囦欢銆傚鏋滃彟涓€涓簲鐢ㄧ▼搴忎腑瀛樺湪涓庣洰鏍囨枃浠跺悓鍚嶇殑妯℃澘鏂囦欢锛孌jango娌℃湁鍔炴硶鍖哄垎瀹冧滑銆傛垜浠渶瑕丏jango鏉ラ€夋嫨姝g‘鐨勬ā鏉裤€傛渶濂界殑鍔炴硶鏄皢瀹冧滑鏀惧叆鍚勮嚜鐨勫懡鍚嶇┖闂翠腑锛屼篃灏辨槸灏嗚繖浜涙ā鏉挎斁鍏ヤ竴涓笌鑷韩搴旂敤绋嬪簭鍚屽悕鐨勫瓙鏂囦欢澶逛腑銆傪煂?.2鍒涘缓妯℃澘鏂囦欢//polls/templates/polls/index.html{%iflatest_question_list%}

    {%forquestioninlatest_question_list%}
  • {{question.question_text}}
  • {%endfor%}
{%endif%}#polls/templates/polls/detail.html

{{question.question_text}}

    {%forchoiceinquestion.choice_set.all%}
  • {{choice.choice_text}}
  • {%endfor%}
馃寠5.3浣跨敤妯℃澘#polls/views.pyfromdjango.shortcutsimportrenderfromdjango.httpimportHttpResponsefromdjango.templateimportloaderfrom.modelsimportQuestiondef绱㈠紩锛堣姹傦級锛歭atest_question_list=Question.objects.order_by("-pub_date")[:5]template=loader.get_template("polls/index.html")context={"latest_question_list":latest_question_list}returnHttpResponse(template.render(context,request))鍚姩Django鏈嶅姟鍣紝杈撳叆http://127.0.0.1:8000/polls/鏌ョ湅馃寠5.4浣跨敤妯℃澘锛堝揩鎹峰嚱鏁帮級锛歳ender()fromdjango.httpimportHttpResponsefromdjango.shortcuts浠嶥jango瀵煎叆娓叉煋銆傛ā鏉垮鍏ュ姞杞藉櫒浠?modelsimportQuestiondefindex(request):latest_question_list=Question.objects.order_by("-pub_date")[:5]context={"latest_question_list":latest_question_list}returnrender(request,"polls/index.html",context)浣跨敤render锛屾棤闇€瀵煎叆loader鍜孒ttpResponse銆備絾鏄鏋滆繕鏈夊叾浠栧姛鑳斤紙姣斿detail銆乺esults銆乿ote锛夐渶瑕佺敤鍒帮紝闇€瑕佷繚鐣橦ttpResponse鐨勫鍏ャ€傪煂?.5鎶涘嚭404閿欒Question.DoesNotExist:raiseHttp404("Questiondoesnotexist")returnrender(request,"polls/detail.html",{"question":question})鎵撳紑Django鏈嶅姟鍣紝杈撳叆http://127.0.0.1:8000/polls/1/鎴杊ttp://127.0.0.1:8000/polls/100/鏉ユ煡鐪嬨€備竴涓揩鎹峰嚱鏁帮細get_object_or_404()#polls/views.pyfromdjango.httpimportHttpResponse,Http404fromdjango.shortcutsimportrender,get_object_or_404fromdjango.templateimportloaderfrom.modelsimportQuestiondefdetail(request,question_id):question=get_object_or_404(Question,pk=question_id)returnrender(request,"polls/detail.html",{"question":question})鍏€佸彇鍑烘ā鏉夸腑纭紪鐮佺殑URL鍦╬olls/index.html涓‖缂栫爜閾炬帴锛?li>{{question.question_text}}闂鏄‖缂栫爜鍜屽己鑰﹀悎閾炬帴锛屽浜庡寘鍚澶氬簲鐢ㄧ▼搴忕殑椤圭洰锛屼慨鏀归毦搴﹀緢澶с€備絾鏄湪polls.urls鐨剈rl()鍑芥暟涓紝閫氳繃name鍙傛暟鏉ュ懡鍚峌RL锛屽彲浠ョ敤{%url%}鏍囩浠f浛锛?li>{{question.question_text}}姝ゆ爣璁扮殑宸ヤ綔鍘熺悊鏄湪polls.urls妯″潡鐨刄RL瀹氫箟涓煡鎵惧叿鏈夋寚瀹氬悕绉扮殑鏉$洰銆傚鏋滆鏇存敼poll璇︽儏瑙嗗浘鐨剈rl锛屾瘮濡傛敼涓簆olls/specifics/12/锛屾ā鏉夸腑涓嶉渶瑕佷慨鏀逛换浣曞唴瀹癸紙鍖呮嫭鍏朵粬妯℃澘锛夛紝鍙渶绋嶅井淇敼polls/urls涓殑濡備笅鍐呭鍗冲彲.py:path("specifics//",views.detail,name="detail")涓冦€佺粰URL娣诲姞鍛藉悕绌洪棿鍦ㄤ竴涓湡姝g殑Django椤圭洰涓紝鍙兘鏈変簲涓紝鍗佷釜锛屼簩鍗佷釜锛屾垨鑰呯敋鑷虫洿澶氬涓簲鐢ㄧ▼搴忋€侱jango濡備綍璇嗗埆閲嶅懡鍚嶇殑URL锛熷湪鏍筓RLconf涓坊鍔犲悕绉扮┖闂淬€傚湪polls/urls.py鏂囦欢涓◢浣滀慨鏀癸紝娣诲姞app_name鏉ヨ缃懡鍚嶇┖闂达細#polls/urls.pyfromdjango.urlsimportpathfrom銆俰mportviewsapp_name="polls"urlpatterns=[path("",views.index,name="index"),path("/",views.detail,name="detail"),path("/results/",views.results,name="results"),path("/vote/",views.vote,name="vote"),]鐜板湪缂栬緫polls/index.html骞朵慨鏀癸細
  • {{question.question_text}}
  • 淇敼涓烘寚鍚戣缁嗚鍥綼namespace:
  • {{question.question_text}}
  • 鎬荤粨鏈枃绠€鍗曚粙缁岲jango妯℃澘锛岃嚜瀹氫箟妯℃澘锛屼互鍙婃ā鏉夸笌URL鐨勬槧灏勫叧绯汇€?/p>