zoukankan      html  css  js  c++  java
  • 特有模板 请求生命周期 工程创建流程 数据管理 主机管理

    特有模板

    实现字符自动替换

    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的注释部分


    主机管理

    作业
    	通过前端页面实现操作后台数据库:实现增删改查
    	实现主机分组
    	实现不同的用户可以管理不同的主机
    	在前端可以对主机信息实现增删改查
    
  • 相关阅读:
    JVM类加载的过程
    接口文档设计
    代码规范及CodeReview要点
    Linux权限
    Linux文件
    UltraEdit编辑器基础技巧
    Android环境配置
    JDK 环境配置
    xml没有提示解决办法<eclipse>
    mysql事务实例
  • 原文地址:https://www.cnblogs.com/todayisafineday/p/8111699.html
Copyright © 2011-2022 走看看