1. ImproperlyConfigured: WSGI application 'lightapi.wsgi.application' could not be loaded;

    在moddleware中加了一个 'corsheaders.middleware.CorsMiddleware' ,但是这个app并没有在上面注册(其实也没有安装),在将其注释之后,即可运行了

  2. 创建app的流程:

    在虚拟环境中运行 Python manage.py startapp 应用名

    --->>> 在settings.py中注册应用 ---->>> 在url 中创建路由(主路由与子路由)

    -->>> 在models.py建表-->创建adminx.py文件,配置全局设置,注册该应用下model中的表

    -->>>在_init_.py中配置 default_app_config = "home.apps.HomeConfig" ---xadmin中的显示效果

    --->>> apps.py 里面设置 verbose_name = ‘我的首页’ 设置后台管理系统侧边栏的应用名为自定义的名字

    --->>> views.py 中写视图函数

    ---->>> 设置serializers.py 序列化类

  3. ModuleNotFoundError: No module named 'apps' 在创建完app之后,进行数据迁移,报了这个错

    检查dev.py(开发环境的settings)发现没有将apps这个文件夹的路径加入到环境变量中

  4. RuntimeError: Model class lightapi.apps.home.models.Banner doesn't declare an explicit app_label and isn't in an application in

    INSTALLED_APPS.

    将各apps.py的文件重新写了,然后迁移数据库时就没有显示问题,很玄学

    同时注意一下导入包的路径问题

    07.28 在网上查的,说的是将绝对路径改为相对路径,就可以 --> 今天出了问题之后,改了一下发现,确实不报错了

  5. WARNING basehttp 154 "POST /user/login/mobile/ HTTP/1.1" 403 58 前端登录部分代码,在使用短信验证码登录的时候,返回该错误!

  6. django.db.utils.InternalError: (1050, "Table 'light_news_category' already exists")

    先执行:python manage.py migrate --fake

    再次执行:python manage.py migrate

  7. _str_ returned non-string (type int)

    将orm表中的__str__的返回参数改掉就行了

  8. django.db.utils.ProgrammingError: (1146, "Table 'light.light_news_recommend' doesn't exist")

    https://blog.csdn.net/weisubao/article/details/77187876

  9. django.db.utils.InternalError: (1060, "Duplicate column name 'article_id'")

     忘记写如何解决的了
  10. WARNING basehttp 154 "POST /user/register/mobile/ HTTP/1.1" 403 58 后端路由、函数是正常的,不知道为什么就是403

解决办法:在目标视图类中添加 authentication_classes = [ ] 即可,即可正常了

  1. 需要获取关于某一篇文章的所有评论,使用的是ListAPIView,但是呢,以往使用的都是获取表的所有的数据,然后在这里就不知道怎么做了,

    后来,在鼓捣了半天的源码之后,拿出了get_queryset方法,进行重写,在里面拿到了前端传过来的文章id,并且更改了查询数据库的sql代码,之后成功实现目标,,,

    ---> 刚在想,我是不是可以直接在类里面重写init方法,拿到self.request就可以了啊,这样也不需要在get_queryset里面操作了,但是转眼又想到,直接在类里面是无法 self.request的, 但是又想,是不是可以设置@property来设置成静态属性(试了一下,并不行 --> 可能是方法或技术的原因)

    好在找出了一条可行的办法

        def __init__(self, *args, **kwargs):
    super().__init__()
    self.article_id = '' def get_queryset(self):
    ..占地方,就删掉了,实际不能删... queryset = self.queryset
    from django.db.models.query import QuerySet
    if isinstance(queryset, QuerySet):
    self.article_id = self.request.query_params.get("article_id") # ---------------------
    # Ensure queryset is re-evaluated on each request.
    queryset = queryset.filter(article_id=self.article_id, is_show=True) # --改的这一条--------------
    return queryset
  2. 为什么在create一条数据的时候,有点外键不能使是int型(或str,但是必须是数字),有的就得是数据库查询得数据(fiter查询出的数据)?

    例如:ValueError: Cannot assign "2": "Comment.user" must be a "User" instance.(comment字段关联user表)
  3. 粉丝和被关注表: Reverse accessor for 'FansAndObserved.user' clashes with reverse accessor for 'FansAnd

    Observed.observed'.

    HINT: Add or change a related_name argument to the definition for 'FansAndObserved.observed' or 'FansAndObserved.user'.
    
    我估计是因为我一张表中同时两个字段关联了同一张表,而且设置的是foreiginKey ,是否需要设置成manytomany才行?
    
    ---> 需要关联字段  related_name= ""  ---》 Direct assignment to the reverse side of a related set is prohibited. Use mobile.set() instead.
    
    最终实现结果: related_name= ""  定义的是字段名称,不要和user表里面的字段重复即可 
    
    推测 ---> 应该是用在表中同时关联某一张表多次时,用related_name来区分关联的多个字段
  4. 继承RetrieveAPIView去数据库中的单条数据,但是,又不想在URL后面加上用户id,像是这样 http://api.light.cn:8000/user/userinfo/2 ,自己的想法就是,前端传过来一个token,然后通过这个token去redis里面拿出对应用户的id,之后再通过retrieveAPIView内的方法从数据库中拿出单条数据,此时的URL,应该是这样的:http://api.light.cn:8000/user/userinfo/?token= 。。。(跟的是具体的token)

    ---> 去源码中发现,原本URL该写成这样: http://api.light.cn:8000/user/userinfo/(?P(<pk>\d+)) ,原本以为,此处的 pk 是任意定义的,但是在retrieveAPIView继承的GenericAPIView中定义了:
    
    ```
    # If you want to use object lookups other than pk, set 'lookup_field'.
    # For more complex lookup requirements override `get_object()`.
    lookup_field = 'pk'
    lookup_url_kwarg = None
    ``` 上面的那个lookup_field 参数就是识别URL中的pk的,下面的lookup_url_kwarg应该是从传过来的参数中获取值,具体源代码在下面: ```
    # Perform the lookup filtering.
    lookup_url_kwarg = self.lookup_url_kwarg or self.lookup_field
    ``` 然后过滤的条件就是这两个参数决定的,**这两个参数写在 get_object 方法里面**, ----》》》》开始的想法是重写get_object方法,但是,写了半天也没有将过滤条件写出来,于是换了思路 ----》》》我去找上一层,其中在 **RetrieveModelMixin** 这个类中有 ```
    def retrieve(self, request, *args, **kwargs):
    instance = self.get_object()
    serializer = self.get_serializer(instance)
    return Response(serializer.data)
    ``` 仔细看看,发现返回的数据也是在这里面操作的,第二行应该是获取queryset数据了,第三行是序列化,那么我只将第二行的数据注释掉,自己从数据库里面拿数据不就行了嘛,,, ----》》》 实践结果发现,确实拿到了目标数据,并且URL也变成了http://api.light.cn:8000/user/userinfo/?token= 。。。(跟的是具体的token)
  5. 退出登录的时候,redis里面的token没有删掉,这个是还需要优化的

Light项目---实现后端接口时遇见的一些问题的更多相关文章

  1. Light项目---vue搭建前端时遇见的一些问题

    css样式中设置的: opacity 表示透明度 将js对象存储到localStorge中 的时候,直接存储是不行的,会变成[object Object],都是这样的数据, 需要将其进行JSON化处理 ...

  2. 构建:vue项目配置后端接口服务信息

    背景 vue-cli脚手架生成的webpack标准模板项目 HTTP库使用axios 一.开发环境跨域与API接口服务通信 整体思路: 开发环境API接口请求baseURL为本地http://loca ...

  3. SpringCloud微服务之跨服务调用后端接口

    SpringCloud微服务系列博客: SpringCloud微服务之快速搭建EurekaServer:https://blog.csdn.net/egg1996911/article/details ...

  4. vue菜鸟从业记:公司项目里如何进行前后端接口联调

    最近我的朋友王小闰进入一家新的公司,正好公司项目采用的是前后端分离架构,技术栈是王小闰非常熟悉的vue全家桶,后端用的是Java语言. 在前后端开发人员碰面之后,协商确定好了前端需要的数据接口(扯那么 ...

  5. 【项目实践】SpringBoot三招组合拳,手把手教你打出优雅的后端接口

    以项目驱动学习,以实践检验真知 前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个 ...

  6. vue项目axios请求接口,后端代理请求接口404,问题出现在哪?

    在vue项目中,列表数据需要用到qq音乐接口中的数据,但是直接请求不行,有host及referer限制,需要采用后端代理的方式.借助axios及node的express,在dev-server.js中 ...

  7. 前后端分离项目(九):实现"添加"功能(后端接口)

    好家伙,来了来了,"查"已经完成了,现在是"增" 前端的视图已经做好了,现在我们来完善后端 后端目录结构   完整代码在前后端分离项目(五):数据分页查询(后端 ...

  8. 【小程序】调用wx.request接口时需要注意的问题

    写在前面 之前写了一篇<微信小程序实现各种特效实例>,上次的小程序的项目我负责大部分前端后台接口的对接,然后学长帮我改了一些问题.总的来说,收获了不少吧! 现在项目已经完成,还是要陆陆续续 ...

  9. UEditor实现前后端分离时单图上传

    首先,需要下载部署ueditor相关代码,可以参考一篇简单的博客,这里不再赘述: 环境搭建好后,我们先简单使用一下,启动http://web.yucong.com:8080/ueditor/index ...

随机推荐

  1. js 基础 for in 和 for of的区别详解

    for in 和 for of 相对于大家肯定都不陌生,都是用来遍历属性的没错.那么先看下面的一个例子: 例1 const obj = { a: 1, b: 2, c: 3 } for (let i ...

  2. BUUCTF weirdlist 一路到底

    Weird list 这题恶心的一批 给了一堆列表 这...这是人做的题吗... 放飞自我,打开脑洞 把‘1’空出来,其他数字换为‘*’画出来 然后看到了flag,但是 这...这是什么flag,ag ...

  3. 从零开始做一个Android自动化

    移动端自动化简单说就是,写好操作app的程序,运行起来,自动执行程序和测试用例,输出执行结果,结果正确,测试通过. 自动化可以方便地完成安装/卸载.启动/运行.UI适配等环节,节省时间: 同一测试脚本 ...

  4. @InitBinder 前端传递date时间类型属性时,转换错误问题

    在Controller里加上这段代码 @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomE ...

  5. 转载 初学者必看——最简单最清晰的Struts2项目搭建流程

    https://blog.csdn.net/key0323/article/details/50773499 在项目中想要使用Struts2框架,我该怎么做?从哪里开始?这是我的疑惑,我想也是很多初学 ...

  6. mybatis generator工具集成(一)

    第一步,pom中加入 <build> <plugins> <plugin> <groupId>org.springframework.boot</ ...

  7. dependency与dependencyManagement区别

    在maven的pom文件中,有时候会见到dependencyManagement,它与denpendency有什么区别? 比方说,你在一个parent的pom里把你所需要的依赖包,版本号都写在depe ...

  8. linux之-mysql数据库2

    1.新建数据库 语句格式为 CREATE DATABASE <数据库名字>;,(注意不要漏掉分号 ;),前面的 CREATE DATABASE 也可以使用小写,具体命令为: 2.连接数据库 ...

  9. 【已转移】【缓存与性能优化】一篇文章搞掂:Redis

    本文篇幅较长,建议合理利用右上角目录进行查看(如果没有目录请刷新). 一.什么是Redis 全称: Remote Dictionary Server 远程字典服务器 实质: 一个缓存结构服务器或数据结 ...

  10. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】04、统一处理异常

    本节讨论如何使用Spring的异常处理机制,当我们程序出现错误时,以相同的一种格式,把错误信息返回给客户端 1.创建一些自定义异常 public class TipsException extends ...