写Detail的接口


ui-sref="field.productAttrDetail({id: li.id})">编辑</button>
 ui-sref="field.productAttrDetail">新增
然后跳转到Detail页面
在写内容的地方双向绑定一波:(还会添加一些表单验证的东西)
ng-model="vm.data.values" 
在最下边那个提交或者保存按钮上 写一波点击事件
ng-click="vm.addOrUpdate()"
然后跳转到ctrl文件中:
if(vm.id){
    productService.getProduct(vm.id).then(function(res){
        vm.data = res.data.obj;
    });
}

vm.addOrUpdate = function(){
    vm.data.type = PRODUCT[0].id;
    productService.addOrUpdate(vm.id, vm.data, 'field.productAttr');
}
上边那个if是如果有id的话就直接读出来,跟下边这个方法不相关
下边这个方法:vm.data.type看接口文档
addorupdata后的参数中vm.id 是传id的  vm.data是把所有的绑定的vm.data传过去,再后边是点击这个按钮之后的跳转的地址。
然后点addorupdata跳转到servce文件中://新增或修改
addOrUpdate: function(id, param, url){
    if(id) {
        this.updateProduct(id, param).then(function(res){
            $state.go(url, {}, {reload: true});
        });
    } else {
        this.addProduct(param).then(function(res){
            $state.go(url, {}, {reload: true});
        });
    }
}
传过来了三个参数,如果有id的话就执行updata这个函数,
(其中:执行完了那个函数就跳转 跳转的 go 就是这么写:$state.go(url,{},{reload:true}))
这个函数是:
//2.修改
updateProduct: function(id,params){
return $http.put(project_path.updateOrDeleteOrGetProduct(id),params);
},
点击updateordeleteorget跳转到上边的地址
//2.修改޸3.删除  4、根据ID查询单个
updateOrDeleteOrGetProduct: function(id){
    return "/ajax/1.0/property/globalproperty/"+id;
},
传到这个地址中。
同理:如果没有id就去新增
//1.新增
addProduct: function(params) {
    return $http.post(project_path.addProduct,params);
},
//1.新增
addProduct: "/ajax/1.0/property/globalproperty",

### 如何在Django中创建RESTful API接口 #### 初始化项目并安装必要环境 为了构建基于Django的RESTful API,需先设置好开发环境。这涉及到创建一个新的Django项目以及安装`djangorestframework`包。 ```bash pip install djangorestframework ``` 接着,在项目的`settings.py`文件内添加`rest_framework`至已安装的应用列表中[^4]: ```python INSTALLED_APPS = [ ... 'rest_framework', ] ``` #### 定义商品模型 随后进入具体业务逻辑的设计阶段——定义数据结构即Model。假设要处理的是一个简单的帖子(Post)实体,则可以在`api/models.py`下编如下代码片段[^3]: ```python from django.db import models class Post(models.Model): title = models.CharField(max_length=120) author = models.CharField(max_length=120) email = models.EmailField(default='') def __str__(self): return self.title ``` 完成上述操作后记得执行迁移命令使更改生效: ```bash python manage.py makemigrations python manage.py migrate ``` #### 创建序列化器 为了让客户端能方便地与服务器交互,还需设计对应的Serializer用于转换对象实例和原始输入/输出之间的映射关系。于是在`serializers.py`中加入以下内容[^1]: ```python from rest_framework import serializers from .models import Post class PostSerializer(serializers.ModelSerializer): class Meta: model = Post fields = '__all__' ``` #### 编视图函数 接下来就是核心部分—-实现CRUD (Create, Retrieve, Update and Delete) 功能。通过继承自`APIView`类来自定义GET、POST等HTTP请求方法的行为。这里给出一个简化版的例子作为参考: ```python from rest_framework.views import APIView from rest_framework.response import Response from .models import Post from .serializers import PostSerializer class PostList(APIView): def get(self, request): posts = Post.objects.all() serializer = PostSerializer(posts, many=True) return Response(serializer.data) def post(self, request): serializer = PostSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=201) return Response(serializer.errors, status=400) class PostDetail(APIView): def get_object(self, pk): try: return Post.objects.get(pk=pk) except Post.DoesNotExist: raise Http404 def get(self, request, pk): post = self.get_object(pk) serializer = PostSerializer(post) return Response(serializer.data) def put(self, request, pk): post = self.get_object(pk) serializer = PostSerializer(post, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) return Response(serializer.errors, status=400) def delete(self, request, pk): post = self.get_object(pk) post.delete() return Response(status=204) ``` #### 配置URL路由 最后一步便是关联起各个视图组件同其对应路径间的联系。编辑`urls.py`文档以指定API端点地址: ```python from django.urls import path from api.views import PostList, PostDetail urlpatterns = [ path('posts/', PostList.as_view()), path('posts/<int:pk>/', PostDetail.as_view()) ] ``` 至此便完成了整个流程介绍,当然实际应用场景可能会更加复杂多变,但基本思路大致相同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值