小编Sid*_*don的帖子

是否可以将 TokenObtainPairView (django-rest-frakmework-simplejwt) 端点放在 DRF 上的 Api 根中?

考虑下面的代码(在 urls.py 中):

router = DefaultRouter()
router.register('my-endpoint', MyViewSet, basename='mybasename')
urlpatterns = [
    path('api/v1/', include(router.urls)),
    path('api/token/', TokenObtainPairView.as_view(), name='token_obtain_pair'),
    path('api/token/refresh/', TokenRefreshView.as_view(), name='token_refresh'), 
]
Run Code Online (Sandbox Code Playgroud)

此代码有效,但 2 个端点(TokenObtainPairView 和 TokenRefreshView)未出现在 Root API (DRF) 中

然后,我尝试在路由器上注册 django-rest-frakmework-simplejwt 的两个端点:

router = DefaultRouter()
router.register('my-endpoint', MyViewSet, basename='mybasename'),
router.register('api/token/', TokenObtainPairView.as_view(), basename='token_obtain_pair')
router.register('api/token/refresh/', TokenRefreshView.as_view(), basename='token_refresh')

# Other way:
# router.register('api/token/', TokenObtainPairView, basename='token_obtain_pair')
# router.register('api/token/refresh/', TokenRefreshView, basename='token_refresh')

urlpatterns = [
    path('api/v1/', include(router.urls))
]
Run Code Online (Sandbox Code Playgroud)

然后当我运行时,出现以下错误:

File "/home/sidon/dev/boticario-teste/boticashback/boticashback/urls.py", line 32, in <module>
    path('api/', include(router.urls)),
File "/home/sidon/miniconda3/envs/botcash/lib/python3.8/site-packages/rest_framework/routers.py", line 78, in urls
    self._urls = self.get_urls() …
Run Code Online (Sandbox Code Playgroud)

jwt django-rest-framework django-rest-framework-jwt

6
推荐指数
1
解决办法
499
查看次数

根据先前选择的元素过滤Django表单选择元素

让我们考虑以下模型

models.py

Class Brand(models.Model):
    company_name = models.CharField(max_length=100)


class CarModel(models.Model):
    brand = models.ForeignKey(Brand)
    name = models.CharField(max_length=100)


Class FleetCars(models.Model):
    model_car = models.Foreignkey(CarModel)
Run Code Online (Sandbox Code Playgroud)

在django中解决这个问题的最佳方法是什么?假设一个表单(用于FleetCars中的插入)由两个选择元素组成,如下所示:

图片示例

<!DOCTYPE html>
<html>
<head>
<title>Page Title</title>
</head>
<body>

<br />Brand:
<select>
   <option value="Brand1">Brand1</option>
   <option value="Brand2">Brand2</option>
</select>
<br />
<br />Model:
<select>
   <option value="Model1_B1">Model1_B1</option>
   <option value="Model1_B2">Model1_B2</option>
</select>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我希望第二个选项中的选项取决于在第一个选择中选择的值,例如,如果用户在第一个选择中为Brand选择了Brand1,则第二个选择将仅使用Brand为Brand1的汽车进行过滤,这只是"Model1_B1".

OBS.我看过很多带有forms.ModelChoiceField的解决方案,但只能用于编辑,因为用户不会改变品牌.

django

4
推荐指数
1
解决办法
7664
查看次数