首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django REST框架将所有urls移动到路由器

Django REST框架将所有urls移动到路由器
EN

Stack Overflow用户
提问于 2018-01-26 08:14:04
回答 2查看 816关注 0票数 0

我几乎没有使用python的经验。你能帮帮我吗?有一个老项目,它的结构如下

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: utf-8 -*-
import re

from django.conf import settings
from django.conf.urls import include, url
from django.contrib import admin
from django.views.static import serve
from rest_framework import routers # i added it

import home.views

router = routers.DefaultRouter() # i added it


urlpatterns = [
    url(r'^$', home.views.HomeView.as_view()),
    url(r'^api/v2/', include('api.v2.urls', namespace='api-v2')),
    url(r'^help/', include('helps.urls', namespace='helps')),
    url(r'^admin/', include(admin.site.urls)),
    url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')), # i added it
    url(r'^', include(router.urls)) # i added it
]

我想让REST API,以便您可以看到所有可能的路线。所以我尝试添加rest_framework.urls。据我所知,有必要使用VeiwSet将其添加到路由器中。我不太明白如何使用我已经拥有的东西来查看REST API中的链接?或者我需要为每个链接创建一个Veiwset?

例如,api.v2.urls包含next:(类似于helps.urls,等等)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# -*- coding: utf-8 -*-
from django.conf.urls import url
import api.v2.views

urlpatterns = [
    url(r'^data/info', api.v2.views.info_data),
    url(r'^visits$', api.v2.views.visits),
    url(r'^additional_info/', api.v2.views.additional_info),
]
EN

回答 2

Stack Overflow用户

发布于 2018-01-26 09:28:37

Viewset将多个视图合并到同一个类中。例如,您可以让它为您的某个Django模型提供CRUD api。

我推荐阅读http://www.django-rest-framework.org/api-guide/viewsets/

您可以在路由器中注册Viewset。我将为视图的每个视图生成一个url。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class UserViewSet(viewsets.ModelViewSet):
    """
    A viewset for viewing and editing user instances.
    """
    serializer_class = UserSerializer
    queryset = User.objects.all()

在urls.py中

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from myapp.views import UserViewSet
from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'users', UserViewSet, base_name='user')

urlpatterns = [
    ...
    url(r'^', include(router.urls))
]

如果打印router.urls

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for url in router.urls: print(url)

您将看到类似如下的内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<RegexURLPattern user-list ^ users/$>
<RegexURLPattern user-list ^ users\.(?P<format>[a-z0-9]+)/?$>
<RegexURLPattern user-detail ^ users/(?P<pk>[^/.]+)/$>
<RegexURLPattern user-detail ^ users/(?P<pk>[^/.]+)\.(?P<format>[a-z0-9]+)/?$>

它显示了视图集的每个视图的url。

您也可以为REST API使用常规的Viewhttp://www.django-rest-framework.org/api-guide/views/可以像任何常见的Django视图一样添加到你的urls中。

我希望它能帮上忙

票数 0
EN

Stack Overflow用户

发布于 2018-01-26 13:29:03

我相信你需要显式声明你想要显示的urls:

这是我在我的一个项目中做的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
urlpatterns = [
    # Your stuff: custom urls includes go here
    url(r'^api/$', api_root, name='api-root'),    
] 


@api_view(['GET'])
@permission_classes((IsAdminUser, ))
def api_root(request, format=None):
    return Response({
        'apples': reverse('my-api:oranges-all'),
        'oranges': reverse('my-api:oranges-list'),

    })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48457744

复制
相关文章
Django in App Urls
Django 2.0 版本urls配置 2.0 简化了路由的配置,不需要写正则了。和Flask定义路由格式差不多,都是 edit/<int:id> 1、项目的总urls配置: 2、apps的url
简单、
2018/07/17
3240
Django REST Framework-路由器(二)
除了基本用法之外,路由器还支持一些高级用法,例如定制URL的前缀、后缀、视图函数名称等。下面是一些示例。
玖叁叁
2023/04/25
2190
Django REST Framework-路由器(一)
Django REST Framework(以下简称DRF)是基于Django框架构建的Web API框架。在DRF中,路由器(Router)是一个非常有用的工具,可以帮助我们轻松地定义API的路由,实现快速、可维护的API开发。
玖叁叁
2023/04/25
7450
django:理解urls路由
然后自己就反复试验了多次,又仔细看了文档中的描述(我的蹩脚英语不足以支撑看原版英文文档,看的英译汉,所以翻译后有些字眼确实不好理解,没内个味道了...)
冰霜
2022/03/19
4470
django:理解urls路由
django之urls系统
Django的urls系统简介 Django 1.11版本 URLConf官方文档:https://docs.djangoproject.com/en/1.11/topics/http/urls/ URL配置(URLconf)就像Django 所支撑网站的目录。它的本质是URL与要为该URL调用的视图函数之间的映射表。 你就是以这种方式告诉Django,对于这个URL调用这段代码,对于那个URL调用那段代码。 URLconf配置 基本格式: from django.conf.urls import url
人生不如戏
2018/04/12
1.3K0
Django REST框架 | 封装 Respose 类
可以发现在给客户端返回数据都有固定的格式,比如 json。我们为了减少重复代码,重写Response 类
白墨石
2021/01/12
1.6K0
django-rest-framework框架学习
现在新一代web应用都开始采用前后端分离的方式来进行,淘汰了以前的服务器端渲染的方式。前后端分离方式有许多好处,比如 1、可以前后端并行开发,提高开发效率 2、页面都在客户端进行渲染,提高了渲染速度,减小了服务器的压力 3、一套api提供给多个客户端使用,而且不限制客户端的类型(web,app均可)
earthchen
2020/09/24
1.3K0
【DRF】快速入门,使用DjangoRestFrameWork自动生成Restful风格的增删改查代码和接口文档!
DRF快速入门⭐都快2023年了还有人自己写增删改查代码?!?我不允许还不会有人用DRF!⭐今天教大家使用 Django Rest FrameWork 自动生成Restful风格的增删改查代码和接口文档!⭐参考文章:首页 - Django REST 框架 (django-rest-framework.org)(官方文档)注意:Django Rest FrameWork 是在Django框架下使用以下内容需要先创建一个Django项目什么是Restful风格:RESTful API 一种流行的 API 设计风
LonelySnowman
2022/12/07
1.5K0
Django路由(urls.py)
路由控制着视图函数的调用。即发起的请求所包含的路由就对应着Django会调用该路由所对应的视图函数。所以,综合来看,在Django中的视图+路由才应该是等价于MVC模式中的C。视图函数确实完成了业务逻辑,但是还差了一个步骤,那就是如何调用这个视图函数,这就是路由的作用。通过路由,Django将不同的路由和不同的视图函数对应起来。这样就可以根据请求中的路由来调用相应的视图函数完成业务逻辑的处理。
zy010101
2021/10/09
4340
Django路由(urls.py)
跟着官方文档学Python——Django Rest framework
这周将会持续更新跟着官方文档学Python系列文章,主要是围绕web框架以及其他后端组件的官方文档展开学习。日拱一卒,让我们开始吧!
才浅Coding攻略
2022/12/12
2.3K0
跟着官方文档学Python——Django Rest framework
Django REST Framework-什么是路由
Django REST Framework(以下简称DRF)是一个强大的框架,用于在Django中构建Web API。路由(Routing)是DRF中的一个关键概念,用于确定请求的处理方式。
玖叁叁
2023/04/24
4740
DRF工程搭建
DRF是以Django扩展应用的方式提供的,所以我们可以直接利用已有的Django环境而无需从新创建。(若没有Django环境,需要先创建环境安装Django)
py3study
2020/01/15
1.2K0
DRF工程搭建
Django REST 框架详解 09 | 权限组件
APIView 的 dispatch 中使用 initial 方法实现初始化并进行三大认证,第二步进行权限组件调用
白墨石
2021/01/12
1.2K0
Django REST 框架详解 08 | 认证组件
APIView 的 dispatch 中使用 initial 方法实现初始化并进行三大认证,第一步就是认证组件
白墨石
2021/01/12
1.2K0
Django REST 框架详解 05 | 视图家族 Mixins
Django REST framework 为了方便视图类的操作,构建了包括以下几种视图类和工具集:
白墨石
2021/01/12
1.1K0
Django: "No module named urls" error for /admin/
http://2057.javaeye.com/blog/797322 No module named urls问题的解决方法如下: Python代码 # OLD: from django.conf.urls.defaults import *   urlpatterns = patterns('',       (r'^admin/', include('django.contrib.admin.urls')),   )   # OLD: from django.conf.urls.defa
用户1258909
2018/07/03
8470
Django REST 框架详解 02 | 设置与模块
文章目录 一、设置 二、路由模块 三、数据库模块 四、异常模块 一、设置 setting.py import os # Build paths inside the project like this: os.path.join(BASE_DIR, ...) BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for
白墨石
2021/01/12
1K0
Django REST 框架详解 10 | 频率认证组件
APIView 的 dispatch 中使用 initial 方法实现初始化并进行三大认证,第三步进行权限组件调用
白墨石
2021/01/12
8500
django_rest 框架解决跨域问题
解决跨域问题,需要安装一个包 pip install django-cors-headers 这个包是 rest框架特定的 之后在setting里面app里面注册’corsheaders’, 还要加一个中间件,位置一定要放对
一写代码就开心
2021/03/02
9380
Django REST 框架的 FBV 与 CBV 选择
浏览器通过url传给路由,由as_view 进入ChildView,ChildView通过View的 dispatch 方法来根据不同请求方法执行不同的方法
白墨石
2021/01/12
1.3K0

相似问题

Django rest框架路由器urls为空

12

Django rest框架urls

10

Django Rest框架嵌套Urls

11

提取Django Rest框架的所有API路径/urls

127

Django Rest框架urls路由器仅识别一个路径

14
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文