Flask 菜品管理

发布时间:2024年01月06日

web/templates/food/cat_set.html

{% extends "common/layout_main.html" %}
{% block content %}
{% include "common/tab_food.html" %}
<div class="row m-t  wrap_cat_set">
	<div class="col-lg-12">
		<h2 class="text-center">分类设置</h2>
		<div class="form-horizontal m-t m-b">
			<div class="form-group">
				<label class="col-lg-2 control-label">分类名称:</label>
				<div class="col-lg-10">
					<input type="text" name="name" class="form-control" placeholder="请输入分类名称~~" value="{{ info.name }}">
				</div>
			</div>
			<div class="hr-line-dashed"></div>
			<div class="form-group">
				<label class="col-lg-2 control-label">权重:</label>
				<div class="col-lg-10">
					<input type="text" name="weight" class="form-control" placeholder="请输入分类名称~~" value="{% if info and info.weight > 0 %}{{ info.weight }}{% else %}1{% endif%}">
				</div>
			</div>
			<div class="hr-line-dashed"></div>
			<div class="form-group">
				<div class="col-lg-4 col-lg-offset-2">
                    <input type="hidden" name="id" value="{{ info.id }}">
					<button class="btn btn-w-m btn-outline btn-primary save">保存</button>
				</div>
			</div>
		</div>
	</div>
</div>
{% endblock %}
{% block js %}
<script src="{{ buildStaticUrl('/js/food/cat_set.js') }}"></script>
{% endblock %}

这段代码是一个网页模板,使用了模板引擎语法。下面我将逐段解析代码的功能和作用:

  1. {% extends "common/layout_main.html" %}:这行代码表示该模板继承了名为"common/layout_main.html"的父模板。

  2. {% block content %}{% include "common/tab_food.html" %}:这两行代码定义了一个名为"content"的块,并在其中包含了"common/tab_food.html"模板。

  3. <div class="row m-t wrap_cat_set">:这行代码定义了一个带有样式类名的div元素。

  4. <div class="col-lg-12">:这行代码定义了一个带有样式类名的div元素。

  5. <h2 class="text-center">分类设置</h2>:这行代码定义了一个居中对齐的h2标题元素。

  6. <div class="form-horizontal m-t m-b">:这行代码定义了一个带有样式类名的div元素。

  7. <div class="form-group">:这行代码定义了一个带有样式类名的div元素。

  8. <label class="col-lg-2 control-label">分类名称:</label>:这行代码定义了一个带有样式类名的label元素。

  9. <div class="col-lg-10">:这行代码定义了一个带有样式类名的div元素。

  10. <input type="text" name="name" class="form-control" placeholder="请输入分类名称~~" value="{{ info.name }}">:这行代码定义了一个文本输入框元素,其中包含了一个名为"name"的属性和一个名为"info.name"的变量。

  11. <div class="hr-line-dashed"></div>:这行代码定义了一个带有样式类名的div元素,用于创建一条虚线。

  12. <div class="form-group">:这行代码定义了一个带有样式类名的div元素。

  13. <label class="col-lg-2 control-label">权重:</label>:这行代码定义了一个带有样式类名的label元素。

  14. <div class="col-lg-10">:这行代码定义了一个带有样式类名的div元素。

  15. <input type="text" name="weight" class="form-control" placeholder="请输入分类名称~~" value="{% if info and info.weight > 0 %}{{ info.weight }}{% else %}1{% endif%}">:这行代码定义了一个文本输入框元素,其中包含了一个名为"weight"的属性和一个名为"info.weight"的变量。

  16. <div class="hr-line-dashed"></div>:这行代码定义了一个带有样式类名的div元素,用于创建一条虚线。

  17. <div class="form-group">:这行代码定义了一个带有样式类名的div元素。

  18. <div class="col-lg-4 col-lg-offset-2">:这行代码定义了一个带有样式类名的div元素,并设置了偏移量。

  19. <input type="hidden" name="id" value="{{ info.id }}">:这行代码定义了一个隐藏的输入框元素,其中包含了一个名为"id"的属性和一个名为"info.id"的变量。

  20. <button class="btn btn-w-m btn-outline btn-primary save>保存</button>:这行代码定义了一个按钮元素,其中包含了一些样式类名。

以上是对代码的功能和作用的解析。这段代码主要是用于展示一个分类设置的表单页面,包含了分类名称、权重等输入框,并且有一个保存按钮。

web/static/js/cat_set.js

;
var food_cat_set_ops = {
    init:function(){
        this.eventBind();
    },
    eventBind:function(){
        $(".wrap_cat_set .save").click(function(){
            var btn_target = $(this);
            if( btn_target.hasClass("disabled") ){
                common_ops.alert("正在处理!!请不要重复提交~~");
                return;
            }

            var name_target = $(".wrap_cat_set input[name=name]");
            var name = name_target.val();

            var weight_target = $(".wrap_cat_set input[name=weight]");
            var weight = weight_target.val();

            if( name.length < 1 ){
                common_ops.tip( "请输入符合规范的分类名称~~",name_target );
                return false;
            }

            if( parseInt( weight ) < 1 ){
                common_ops.tip( "请输入符合规范的权重,并且至少要大于1~~",weight_target );
                return false;
            }

            btn_target.addClass("disabled");

            var data = {
                name: name,
                weight: weight,
                id:$(".wrap_cat_set input[name=id]").val()
            };

            $.ajax({
                url:common_ops.buildUrl( "/food/cat-set" ),
                type:'POST',
                data:data,
                dataType:'json',
                success:function( res ){
                    btn_target.removeClass("disabled");
                    var callback = null;
                    if( res.code == 200 ){
                        callback = function(){
                            window.location.href = common_ops.buildUrl("/food/cat");
                        }
                    }
                    common_ops.alert( res.msg,callback );
                }
            });


        });
    }
};

$(document).ready( function(){
    food_cat_set_ops.init();
} );

这段代码是一个Python Flask应用中的一个接口函数,用于处理/cat-set接口的GET请求和POST请求。下面是对代码的解释:

  1. 引用中的代码是一个HTML模板文件,其中使用了{%block js %}和{% endblock %}来引入一个JavaScript文件。这个JavaScript文件的路径是通过buildStaticUrl函数生成的。

  2. 引用中的代码是一个Python蓝图(Blueprint)中的一个路由函数,用于处理/cat-set接口的请求。这个函数首先判断请求的方法是GET还是POST,然后根据不同的方法执行不同的逻辑。

  3. 如果请求的方法是GET,那么函数会获取请求参数中的id,并根据id查询数据库中对应的FoodCat对象。然后将查询到的对象和当前的cat(可能是一个全局变量)放入resp_data字典中。

  4. 最后,函数会调用ops_render函数渲染一个HTML模板文件(food/cat_set.html),并将resp_data作为参数传入。

  5. 在JavaScript代码中,food_cat_set_ops是一个对象,其中包含了一个init方法和一个eventBind方法。init方法用于初始化页面,eventBind方法用于绑定事件。

这段代码是一个jQuery的事件处理函数,当点击".wrap_cat_set .save"元素时触发。下面是对代码各部分的解释:

  1. var btn_target = $(this);:将当前点击的元素保存到变量btn_target中。

  2. if( btn_target.hasClass("disabled") ){...}:判断btn_target元素是否有类名为"disabled",如果有,则弹出提示信息并返回。

  3. var name_target = $(".wrap_cat_set input[name=name]");:选取类名为"wrap_cat_set"的元素下的name属性为"name"的input元素,并将其保存到变量name_target中。

  4. var name = name_target.val();:获取name_target元素的值,并将其保存到变量name中。

  5. var weight_target = $(".wrap_cat_set input[name=weight]");:选取类名为"wrap_cat_set"的元素下的name属性为"weight"的input元素,并将其保存到变量weight_target中。

  6. var weight = weight_target.val();:获取weight_target元素的值,并将其保存到变量weight中。

  7. if( name.length < 1 ){...}:判断name的长度是否小于1,如果是,则弹出提示信息并返回。

  8. if( parseInt( weight ) < 1 ){...}:将weight转换为整数,并判断是否小于1,如果是,则弹出提示信息并返回。

  9. btn_target.addClass("disabled");:给btn_target元素添加类名"disabled"。

  10. var data = {...};:创建一个对象data,包含name、weight和id属性,分别对应输入框的值和隐藏域的值。

这段代码的功能是在点击保存按钮时,获取输入框中的值,并进行一些验证,然后将获取到的数据保存到data对象中。

文章来源:https://blog.csdn.net/xinzhengLUCK/article/details/135431915
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。