我正在使用DjangoRestFramework。我有一個UserSerialzer在我serializers.py文件:DjangoRestFramework - 如何將序列化表單傳遞給前端?
from django.contrib.auth.models import User
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username', 'password', 'email',)
這是我的urls.py文件:
urlpatterns = [
url(r'^$', views.HomePageView.as_view()),
url(r'^users$', views.user_list.as_view()),
url(r'^users/(?P<pk>[0-9]+)$', views.user_detail.as_view()),
]
,這是我的views.py文件:
class HomePageView(TemplateView):
template_name = "home.html"
def get_context_data(self, **kwargs):
context = super(HomePageView, self).get_context_data(**kwargs)
# context['users'] = User.objects.all()
return context
class user_list(APIView):
"""
List all users, or create a new user.
"""
serializer_class = UserSerializer
def get(self, request):
users = User.objects.all()
serializer = UserSerializer(users, many=True)
return Response(serializer.data)
def post(self, request):
serializer = UserSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class user_detail(APIView):
"""
Get, update or delete a specific user.
"""
serializer_class = UserSerializer
def get_object(self, pk):
try:
return User.objects.get(pk=pk)
except User.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
def get(self, request, pk):
user = self.get_object(pk)
serializer = UserSerializer(user)
return Response(serializer.data)
def put(self, request, pk):
user = self.get_object(pk)
serializer = UserSerializer(user, data=request.DATA)
if serialzier.is_valid():
serializier.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
def delete(self, request, pk):
user = self.get_object(pk)
user.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
當我去127.0.0.1:8000/users,DjangoRestFramework有一個顯示用戶列表(JSON對象)的API頁面,它也有一個表單,它具有「用戶名」,「密碼」和「電子郵件」。此表單似乎正確驗證(檢查電子郵件是否是真實電子郵件,並檢查用戶名是否唯一且少於30個字符)。當用戶轉到127.0.0.1:8000(調用HomePageView)時,是否有辦法將此表單傳遞到前端?
我在使用的前端(不知道這個信息,可以幫助與否)AngularJS的過程。
我不認爲你的問題是有道理的。 Django的表單主要用於驗證數據。這應該發生在服務器端。它們也可以用來呈現HTML表單,但這不是表單的主要用途。它是您想要發送到前端的呈現的HTML嗎? –
@wobbily_col是的,我有User對象和一個UserSerializer。當向/ users發送POST請求時,視圖會執行「if serializer.is_valid():serializer.save()」。我打算改變這個「如果serializer.is_valid():User.objects.create_user()」,但儘管如此,我想能夠給前端
@wobbily_colI我注意到默認的DRF API前端(當我訪問/用戶時看到的頁面)有一個表單,當我在視圖中放入「serializer_class = UserSerializer」時會執行此操作。 – user2719875