1. 程式人生 > >Django文字教程

Django文字教程

pytho dict 分系統 current 靜態 for mysite 管理 nag

如下如下:

	1.創建Django工程
		Django-admin startproject 工程名
		
	  mysite
		settings.py---主配置文件
		urls.py-------URL路由文件
		wsgi.py-------網絡通信接口
	  templates-------HTML文件的歸置目錄
	  manage.py-------diango管理主程序
		
	2.創建APP去處理業務請求,一個工程下面可以有多個APP.相當於一個大型項目中的分系統、子模塊、功能部件等等,相互之間比較獨立,但也有聯系。
	  所有的APP共享項目資源。

	  cd 工程名
	  python manage.py startapp cmdb	  
	  
	  	app目錄:
		-migrations 數據操作記錄,是自動創建的。數據修改表結構
			-__init__.py #在python3裏面可有可無都行
		-__init__.py
		-admin.py #django 為我們提供的後臺管理。
		-apps.py  #配置當前App的
		-models.py #ORM,寫指定的類,通過命令可以創建數據庫結構。
		-tests.py  #單元測試
		-views.py  #業務代碼。這個才是真正寫代碼的地方,上面的都是做配置的。

	 
	3.靜態文件配置-在工程下面的setting中,即主配置文件中進行配置,CSS,JS等。
		mysite.settings.py,配置如下:
		STATICFILES_DIRS=(OS.PATH.JOIN(BASE_DIR,‘static‘),) #因為是元組,一定要有逗號
		
	4.模板路徑配置-在工程下面的setting中,即主配置文件中進行配置,HTML等。
		DIRS==> [os.path.join(BASE_DIR,‘templates‘),]
		
	5.關閉django的跨站請求保護機制-在工程下面的setting中,即主配置文件中進行配置
		註釋掉:
		#‘django.middleware.csrf.CsrfViewMiddleware‘
			
	6.定義路由規則-在工程下面的urls.py中,即URL路由文件中進行配置
		urls.py
			‘login‘--->函數名(只是對應一個函數名,後面是不帶括號的)
			
	7.定義視圖函數-APP下的views.py中寫具體的函數內容。
	app->views.py
		def func(request): #request中包含客戶端發來的請求中的所有內容
			#去請求裏面取數據
			#request.method: GET/POST #獲取請求的方式
			#request.GET.get(‘‘,None)  #獲取請求發來的數據
			 127.0.0.1:8000/home?nid=123&name=Jack
			#request.POST.get(‘email‘,None)
			
			通過視圖函數給用戶返回數據的3中方法
			#return HttpResponse(‘字符串‘)
			#return render(request,‘html模板的路徑‘) 例如:test1/home.html
			#return redirect(‘/只能填URL‘,) 不能填html模板的路徑,只能填URL
		
	8.模板渲染
		有一套特殊的模板語言
		======{{變量名}}
		
			1).	def func(request):
					return render(request,‘index.html‘) #發送給用戶的是靜態的數據
				
			2).	def func(request):
					return render(request,‘index.html‘,{‘current_user‘:"Jack"}) #
					
				index.html
				<html>
				
					<body>
						<div>{{current_user}}</div>     #{{current_user}}相當於取變量值
					</body>
				</html>
				
			步驟:
				1>.用戶請求來了,首先到達視圖函數
				2>.視圖函數先去把模板拿過來,模板裏面有特殊標記,再把值與模板進行渲染,渲染完成之後就變成了字符串。如下:
				================最後生成的字符串,整體返回給用戶。特殊的標記是在什麽時候所做的替換?---視圖函數在返回數據的那一剎那之前做的。
				所以咱們的瀏覽器拿到字符串的時候,永遠是被渲染完畢的字符串。
				<html>
				
					<body>
						<div>Jack</div>
					</body>
				</html>
	 
		======For循環
			def func(request):
					return render(request,‘index.html‘,{‘current_user‘:"Jack",‘user_list‘:[‘alex‘,‘eric‘]})
					
				index.html
				<html>
				
					<body>
						<div>{{current_user}}</div>     #{{current_user}}相當於取變量值
						<ul>
							{% for row in user_list %} #row代表列表中的每一個元素,是一個變量名
							<li>{{row}}</li>
							{% endfor %}
						</ul>
					</body>
				</html>
	 
	 
		======字典索引,註意字典與列表的取法不同,一個用的是角標,一個用的是key值。
			def func(request):
					return render(request,‘index.html‘,{
								‘current_user‘:"Jack",
								‘user_list‘:[‘alex‘,‘eric‘],
								‘user_dict‘{‘k1‘:‘v1‘,‘k2‘:‘v2‘}})
					
				index.html
				<html>
				
					<body>
						<div>{{current_user}}</div>     #{{current_user}}相當於取變量值
						<a>{{user_list.1}}</a>
						<a>{{user_dict.k1}}</a>
						<a>{{user_dict.k2}}</a>
					</body>
				</html>
	 
		======條件======= if可以嵌套if循環,也可以嵌套到for循環裏面。
			def func(request):
					return render(request,‘index.html‘,{
								‘current_user‘:"Jack",
								‘age‘:18,
								‘user_list‘:[‘alex‘,‘eric‘],
								‘user_dict‘{‘k1‘:‘v1‘,‘k2‘:‘v2‘}})
					
				index.html
				<html>
				
					<body>
						<div>{{current_user}}</div>     #{{current_user}}相當於取變量值
						<a>{{user_list.1}}</a>
						<a>{{user_dict.k1}}</a>
						<a>{{user_dict.k2}}</a>
						
						{% if age %}
							<a>有年齡</a>
							{% if age > 16 %}
								<a>老男人</a>
							{% else %}
								<a>小鮮肉</a>
							{% endif %}
						{% else %}
							<a>沒年齡</a>
						{% endif %}
						
					</body>
				</html>
	 
	 
	 
	 
	 
	 
	 
	
	
	
	
	
	
	

  

Django文字教程