django - 无法在 Django 路由器中添加 url

标签 django django-views url-routing

我无法添加指向 views.py 中方法的工作人员 URL。在下面的 urls.py 配置中,我创建了一个 DefaultRouter,并注册了 6 个 URL。前 5 个工作正常(它们是基于类的 View ),但是最后一个 URL(workers,这是基于方法的 View )不起作用。此 URL 与 url.conf 中列出的任何 URL 都不匹配。我收到错误消息“使用 maidFactory.urls 中定义的 URLconf,Django 按以下顺序尝试了这些 URL 模式:”。 . . . . . .当前的 URL,workers/,与其中任何一个都不匹配。

router = routers.DefaultRouter()
router.register(r'users', views.UserViewSet)
router.register(r'groups', views.GroupViewSet)
router.register(r'slots', views.SlotViewSet)
router.register(r'city', views.CityViewSet)
router.register(r'location',views.LocationViewSet,base_name='locationMy')
router.register(r'workers',views.WorkerViewSet,base_name='getWorkersBySlotAndLocation')

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
urlpatterns = [
url(r'^', include(router.urls)),
#url(r'^', include('maidFactory.api.urls')),
url(r'^admin/', include(admin.site.urls)),
url(r'^auth/', include('rest_framework_social_oauth2.urls')),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework'))]

我的基于方法的 View 如下:

def WorkerViewSet(request):
    cursor = connection.cursor()
    #cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])
    cursor.execute("select p.wid,p.fname, a.description from workerProfile as p, workerAccount as a where a.isactive=1 and a.wid=p.wid")
    row = cursor.fetchone()
    return HttpResponse(row)

最佳答案

您的 WorkerViewSet 不是实际的 DRF ViewSet但是基于 Django 函数的 View 返回 Django HttpResponse。

您应该将其转换为适当的 DRF View 集,然后使用该 View 集注册您的路由器。

另一种选择是将此作为 url 添加到您的 urls 文件的 urlpatterns 中,它应该可以完美运行。

urlpatterns = [
    url(r'^my/url/path/$', my_views.WorkerViewSet), # This will work
    ....
]

关于django - 无法在 Django 路由器中添加 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32325190/

相关文章:

javascript - 这是我的带有哈希路由设置/策略的 jekyll - 有更好的方法吗?

url-routing - 什么是客户端路由,如何使用?

python - 在模板中访问请求变量

Django HTML 电子邮件模板不会在电子邮件中加载 css

python - 比较表中的字段和 django-orm 中的计算字段

python - Django 2.0 中 "django.core.xheaders"的替代 Django 包

javascript - 如何通过 Django 中的确认弹出窗口创建“删除数据库中的项目”?

python - Django + Angular2 : How to fetch data from database?

python - Django QuerySet 对象没有属性 'objects

scheme - Racket URL 调度