django学习笔记(一)

Django	
	 安装 pip3 install django	
	
	 安装文件位置 C:Python35Scripts
	
	#在指定目录下创建 跳到指定目录 创建Django工程
	django-admin startproject 【工程名称】
	
		mysite
			- mysite        # 对整个程序进行配置(支持缓存,链接数据库,找模板)
				- init
				- settings  # 配置文件
				- url       # URL对应关系
				- wsgi      # 遵循WSIG规范,uwsgi + nginx
			- manage.py     # 管理Django程序:
								- python manage.py 
								- python manage.py startapp xx
								- python manage.py makemigrations
								- python manage.py migrate
		
		
		
	# 运行Django功能
	python manage.py runserver 127.0.0.1:8001
	
	
	chouti
		- chouti
			- 配置
		- 主站 app
		- 后台管理 app
	
	
	
	# 创建app
	python manage.py startapp cmdb
	python manage.py startapp openstack
	python manage.py startapp xxoo....
	
	
	app:
		migrations     数据修改表结构的记录日志
		admin          Django为我们提供的后台管理
		apps           配置当前app
		models         ORM,写指定的类  通过命令可以创建数据库结构
		tests          单元测试
		views          业务代码
	
	
	
	1、配置模板的路径
	
		TEMPLATES = [
				{
					'BACKEND': 'django.template.backends.django.DjangoTemplates',
					'DIRS': [os.path.join(BASE_DIR, 'templates')],
					'APP_DIRS': True,
					'OPTIONS': {
						'context_processors': [
							'django.template.context_processors.debug',
							'django.template.context_processors.request',
							'django.contrib.auth.context_processors.auth',
							'django.contrib.messages.context_processors.messages',
						],
					},
				},
			]
	2、配置静态目录
		static
	
		STATICFILES_DIRS = (
			os.path.join(BASE_DIR, 'static'),
		)

		
		<link rel="stylesheet" href="/static/commons.css" />
		
	  提交表单报错:RuntimeError: You called this URL via POST, 
      but the URL doesn’t end in a slash and you have APPEND_SLASH set.

      将from的action地址改为/结尾的就可以了
      或者
     修改settings:APPEND_SLASH=False
	
	
	

内容整理
	1. 创建Django工程
			django-admin startproject 工程名

	2. 创建APP
		cd 工程名
		python manage.py startapp cmdb

	3、静态文件
		project.settings.py
		
		STATICFILES_DIRS = (
			os.path.join(BASE_DIR, "static"),
		)
	
	4、模板路径
	
		DIRS ==>    [os.path.join(BASE_DIR,'templates'),]
		
	5、settings中
		
		middlerware
		
			# 注释 csrf
			
			
	6、定义路由规则
		url.py
		
			"login" --> 函数名
			
	7、定义视图函数
		app下views.py
			
			def func(request):   request参数必带,包含表单提交的所有数据
			    获取数据
				# request.method   GET / POST				
				# http://127.0.0.1:8009/home?nid=123&name=alex   get提交方式
				# request.GET.get('',None)   # 获取请求发来的而数据
				
				# request.POST.get('',None)
				
				返回数据
				# return HttpResponse("字符串")
				# return render(request, "HTML模板的路径")
				# return redirect('/只能填URL')
				
	8、模板渲染
		特殊的模板语言
		
			-- {{ 变量名 }}
		
				def func(request):
					return render(request, "index.html", {'current_user': "alex"})		
					
				index.html
				
				<html>
				..
					<body>
						<div>{{current_user}}</div>
					</body>
				
				</html>
				
				====> 最后生成的字符串
				
				<html>
				..
					<body>
						<div>alex</div>
					</body>
				
				</html>
			-- For循环
				def func(request):
					return render(request, "index.html", {'current_user': "alex", 'user_list': ['alex','eric']})
		
					
				index.html
				
				<html>
				..
					<body>
						<div>{{current_user}}</div>
						
						<ul>
							{% for row in user_list %}
							
								{% if row == "alex" %}
									<li>{{ row }}</li>
								{% endif %}
								
							{% endfor %}
						</ul>
						
					</body>
				
				</html>
				
			#####索引################# 
				def func(request):
					return render(request, "index.html", {
								'current_user': "alex", 
								'user_list': ['alex','eric'], 
								'user_dict': {'k1': 'v1', 'k2': 'v2'}})
		
					
				index.html
				
				<html>
				..
					<body>
						<div>{{current_user}}</div>
						
						<a> {{ user_list.1 }} </a>
						<a> {{ user_dict.k1 }} </a>
						<a> {{ user_dict.k2 }} </a>
						
					</body>
				
				</html>
			
			###### 条件
			
				def func(request):
					return render(request, "index.html", {
								'current_user': "alex", 
								"age": 18,
								'user_list': ['alex','eric'], 
								'user_dict': {'k1': 'v1', 'k2': 'v2'}})
		
					
				index.html
				
				<html>
				..
					<body>
						<div>{{current_user}}</div>
						
						<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>
	
	
	
XXOO管理:
	MySQL
	SQLAlchemy
	主机管理(8列):
		IP
		端口
		业务线
		...
		
	用户表:
		用户名
		密码
	
	功能:
		1、 登录
		2、主机管理页面
			- 查看所有的主机信息(4列)
			- 增加主机信息(8列) ** 模态对话框
		3、查看详细
			url:
				"detail" -> detail
		
			def detail(reqeust):
				nid = request.GET.get("nid")
				v = select * from tb where id = nid
				...
		4、删除
			del_host -> delete_host
			
			def delete_host(request):
				nid = request.POST.get('nid')
				delete from tb where id = nid
				return redirect('/home')

  

原文地址:https://www.cnblogs.com/qiangayz/p/8735539.html