回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<div>
</div>
<p>我想测试登录功能。<br/>
我用失眠来发出信号</p>
<p>像这样:
<a href="https://i.stack.imgur.com/8ZY6K.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/8ZY6K.png" alt="enter image description here"/></a></p>
<p>我发现request.POST始终为空,但request.body不为空。<br/>
在终端中,输出如下:<br/>
<code>print(request.body)</code>:<code>b'{\n\t"userid" : "TEST",\n\t"userpw" : "TEST",\n\t"created" : ""\n}'</code><br/>
<code>print(request.POST)</code>:<code><QueryDict: {}></code><br/></p>
<p>我在PyCharm中的代码:</p>
<p>models.py:</p>
<pre><code>from django.db import models
class AppAddresses(models.Model):
userid = models.CharField(max_length=30, null=False, default=False)
userpw = models.CharField(max_length=30, null=False, default=False)
created = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['created']
</code></pre>
<p>serializers.py:</p>
<pre><code>from rest_framework import serializers
from .models import AppAddresses
class AppAddressesSerializer(serializers.ModelSerializer):
class Meta:
model = AppAddresses
fields = ['userid', 'userpw']
</code></pre>
<p>URL.py:</p>
<pre><code>from django.contrib import admin
from django.urls import path, include
from addresses import views
urlpatterns = [
path('app_login/', views.app_login),
path('app_signup/', views.app_signup),
path('admin/', admin.site.urls),
path('api-auth/', include('rest_framework.urls', namespace='rest_framework'))
]
</code></pre>
<p>views.py:</p>
<pre><code>from django.contrib.auth.models import User
from django.http import HttpResponse, JsonResponse
from django.views.decorators.csrf import csrf_exempt
from .models import AppAddresses
from .serializers import AppAddressesSerializer
from django.contrib.auth import authenticate
@csrf_exempt
def app_login(request):
if request.method == 'POST':
id = request.POST.get('userid', '')
pw = request.POST.get('userpw', '')
print(request.body)
print(request.POST)
login_result = authenticate(username=id, password=pw)
if login_result:
print("SUCCESS!")
return JsonResponse({'code': '0000', 'msg': 'SUCCESS'}, status=200)
else:
print("FAILED!")
return JsonResponse({'code': '1001', 'msg': 'FAILED'}, status=401)
elif request.method == 'GET':
query_set = AppAddresses.objects.all()
serializer = AppAddressesSerializer(query_set, many=True)
return JsonResponse(serializer.data, safe=False)
# ... skip ...
</code></pre>
<p>正如上面在views.py中所述,我想使用<code>request.POST.get()</code>获得值<code>userid</code>和<code>userpw</code>。<br/>
但它总是返回空的。我已经搜索了很多帖子,但还不能解决这个问题。<br/>
谁能帮帮我吗</p>