python - Django REST Framework Web 登录不起作用
问题描述
我似乎无法弄清楚为什么我的 django 项目中的 rest 框架登录不起作用......我在那里得到了登录链接,它确实将我重定向到了 rest 登录页面,但是在填写了我的凭据之后并单击登录它只会让我回到我来自的页面,但它似乎并没有对我进行身份验证,因为它仍然在右上角显示“登录”......
在这种情况下,我希望它会更改为“admin”,因为我正在尝试使用名为“admin”的超级用户登录...
我肯定错过了一些东西..
这是我的 REST网址
path("rest/auctions", auction_list, name="auction-list"),
path('rest/auctions/<int:pk>', auction_detail, name="auction-detail"),
path('rest-auth/', include('rest_framework.urls', namespace='rest_framework')),
我知道的 rest-auth/ 是一个以某种方式添加登录按钮和所有(魔术?)但也许我也必须做其他事情来使其验证?我不知道...我正在使用内置的 django 身份验证系统和用户模型。
视图.py
@api_view(['GET'])
def auction_list(request, format=None):
if request.method == 'GET':
query = request.GET.get('q')
if query is not None:
auctions = Auction.objects.filter(Q(title__icontains=query), deadline__gte=timezone.now(),
status=Auction.STATUS_ACTIVE)
else:
auctions = Auction.objects.all()
serializer = AuctionSerializer(auctions, many=True, context={'request': request})
return Response(serializer.data)
序列化程序.py
class AuctionSerializer(serializers.ModelSerializer):
winning_bid = serializers.SlugRelatedField(many=False, read_only=True, slug_field='amount', allow_null=True)
seller = serializers.SlugRelatedField(many=False, read_only=True, slug_field='username', allow_null=False)
class Meta:
model = Auction
fields = ('id', 'url', 'title', 'description', 'deadline', 'min_price', 'winning_bid', 'seller')
在我的Settings.py
REST_FRAMEWORK = {
# Use Django's standard `django.contrib.auth` permissions,
# or allow read-only access for unauthenticated users.
'DEFAULT_PERMISSION_CLASSES': [
'rest_framework.permissions.IsAuthenticatedOrReadOnly'
],
'DEFAULT_AUTHENTICATION_CLASSES': [
'rest_framework.authentication.BasicAuthentication',
],
}
最后我可以提一下,当我通过 Postman 使用 API 时,身份验证是有效的。
解决方案
如果其他解决方案不起作用,请添加此行
'DEFAULT_AUTHENTICATION_CLASSES': (
'rest_framework.authentication.SessionAuthentication',
),
推荐阅读
- python - 如何计算矩阵的 R2/Q2
- php - 2 列 DIV/分类表 - Woocommerce
- python - 如何在python中的图形(networkx 2.3)中添加自循环节点?
- java - 尝试使用 IntelliJ 中 javaFX 15 中的模块在 java sdk 15 上运行 javaFX
- hyperledger-fabric - 在两个区块链节点之间发送消息
- javascript - 为什么我得到 [object Object] javascript JSON 文件
- c++ - 主方法中的 C++“未定义引用”
- python - 在 MacOS 上运行 Python Flask 时如何解决此错误
- c++ - 使用 Boost Asio C++ 的 HTTP 获取请求
- db2 - Error: DB2 Stored procedure with error A value is not compatible with the data type of its assignment target。目标名称是“C1”