特有模板 请求生命周期 工程创建流程 数据管理 主机管理

特有模板

实现字符自动替换

html文件中
<span style="color: red;">{{ error_message }}</span>

views.py
render(request, 'login.html', {'error_message': error_message})

----------------------

USER_LIST = [
    {"id":1, "username": "Tom", "email": "tom@163.com", "gender": "M"},
    {"id":2, "username": "Lucy", "email": "lucy@163.com", "gender": "F"},
    {"id":3, "username": "Seven", "email": "seven@163.com", "gender": "M"},
]

# for循环(有开始,有结尾)
{% for row in user_list %}
	<tr>
		<td>{{ forloop.counter }}</td>		#从1开始计数
		<td>{{ forloop.counter0 }}</td>		#从0开始计数
		<td>{{ forloop.revcounter }}</td>	#倒序至1
		<td>{{ forloop.revcounter0 }}</td>	#倒序至0
		<td>{{ forloop.first }}</td>		#是否是第一个
		# 获取字典的值
		<td>{{ row.username }}</td>
		<td>{{ row.gender }}</td>
		<td>{{ row.email }}</td>
	</tr>
{% endfor %}

-----------------------
views.py
def func(request):
	return render(request, 'index.html', 
		{"current_user": "Look", 
		"user_list": ['one', 'two'],
		"user_dict": {"k1": 'v1', "k2": 'v2'},
		"age":10})

html文件
<html>
	<body>
		# 变量
		<div>{{ current_user}}</div>

		# 列表
		<a>{{ user_list.0 }}</a>
		<a>{{ user_list.1 }}</a>
						
		# 字典获取单个值
		<a>{{ user_dict.k1 }}</a>
		<a>{{ user_dict.k2 }}</a>
		# 字典获取key
	    <ul>
	        {% for k in user_dict.keys %}
	            <li>{{ k }}</li>
	        {% endfor %}
	    </ul>
		# 字典获取value
	    <ul>
	        {% for v in user_dict.values %}
	            <li>{{ v }}</li>
	        {% endfor %}
	    </ul>
		# 字典获取key、value
	    <ul>
	        {% for k, v in user_dict.items %}
	            <li>{{ k }}:{{ v }}</li>
	        {% endfor %}
	    </ul>

		# QuerySet,元素为对象的场景
		<h3>部门信息(对象)</h3>
	    {% for row in v1 %}
	        <li>{{ row.id }} {{ row.name }} {{ row.name_en }}</li>
	    {% endfor %}

		# 条件语句,可嵌套
		{% if age %}
			<a>有年龄</a>
				{% if age > 16 %}
					<a>老男人</a>
				{% else %}
					<a>小鲜肉</a>
				{% endif %}
		{% else %}
			<a>无年龄</a>
		{% endif %}
		
		# for循环与条件语句混合使用
		{% for row in user_list %}
			{% if row == "spring" %}
				<a>{{ row }}</a>
			{% endif %}
		{% endfor %}

	</body>
</html>

请求生命周期

用户发送请求-》 路由系统匹配(工程urls.py)-》 视图函数(app.views.py)-》
	DB + 模板(templates)+ 静态文件(static)-》 用户

用户-》 URL对应关系(匹配) -》 视图函数 -》 返回用户字符串
用户-》 URL对应关系(匹配) -》 视图函数 -》 打开一个HTML文件,读取内容
  • 返回用户的本质:字符串

工程创建流程

  1. 创建工程

    • django-admin startproject 工程名
  2. 创建app

    1. cd 工程名
    2. python manage.py startapp app名
  3. 静态文件配置

    1. project.settings.py
    2. STATICFILES_DIRS = ( os.path.join(BASE_DIR, 'static'),)
  4. 模板路径配置

    TEMPLATES -》 'DIRS': [os.path.join(BASE_DIR, 'templates')]

  5. settings.py中

    • middleware中注释掉csrf
  6. 定义路由规则

    • urls.py login --》 函数名
  7. 定义视图函数

    • app的views.py

     

     def func(request):
     	# request.method GET/POST
     	# http:/127.0.0.1:8000/home?nid=123&name=spring
     	# 获取请求发来的数据
     	request.GET.get("nid", None)
     	request.POST.get("", None)
     	
     	return HttpResponse("字符串")
     	return render(request, "HTML模板的路径")
     	return redirect("/只能填URL的路径")
    
  8. 模板渲染

    • 特殊的模板语言
    • 渲染时间:返回给用户数据之前
    • 效果:用户拿到的数据,都是渲染后的

数据管理

课堂练习
	Mysql
	SQLAlchemy
	主机管理(8列):
		- IP
		- 端口
		- 业务线
		- ....
	
	用户表:
		用户名
		密码
	
	功能:
		1. 登陆
		2. 主机管理页面
			1. 查看所有的主机信息(4列)
			2. 增加主机信息(8列) 模态对话框
			3. 查看详细信息
				def detail(request):
					nid = request.GET.get("nid")
					v = select * from tb where id=nid
			4. 删除
				def delete_host(request):
					nid = request.POST.get("nid")
					delete from tb where id=nid
					return redirect('/home')

参阅html的注释部分


主机管理

作业
	通过前端页面实现操作后台数据库:实现增删改查
	实现主机分组
	实现不同的用户可以管理不同的主机
	在前端可以对主机信息实现增删改查
原文地址:https://www.cnblogs.com/todayisafineday/p/8111699.html