我是Django的新手,正在尝试使用restframework。我已经创建了一个简单的模型,我想通过REST和发送JSON数据发布到这个模型。你知道吗
到目前为止我已经做到了:
你知道吗型号.py你知道吗
class Contact(models.Model):
name = models.CharField(max_length=120)
email = models.EmailField()
phone = models.CharField(max_length=15)
city = models.CharField(max_length=120)
comment = models.CharField(max_length=500)
timestamp = models.DateTimeField(auto_now_add=True)
你知道吗序列化程序.py你知道吗
class ContactSerializer(serializers.ModelSerializer):
class Meta:
model = Contact
fields = ('name', 'email', 'phone', 'city', 'comment', 'timestamp')
你知道吗网址.py你知道吗
url(r'^api/contact/(?P<pk>[0-9]+)/$', ContactDetail.as_view()),
你知道吗视图.py你知道吗
class ContactDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Contact.objects.all()
serializer_class = ContactSerializer
format = None
但是当我试图发布到http://127.0.0.1:8001/api/contact
时,我得到了这个错误
13. ^index.html#/verifyEmail/(?P<key>\w+)/$ [name='account_confirm_email']
14. ^api/contact/(?P<pk>[0-9]+)/$
The current URL, api/contact, didn't match any of these.
问题
如何将数据发布到模型并保存?你知道吗
您的主要问题是这里的正则表达式:
与URL不匹配:
匹配应该更像以下内容:
包括后面的斜杠
/
你有几个问题:
您正在使用
generics.RetrieveUpdateDestroyAPIView
,它将提供PUT、GET和DELETE方法。如果您希望能够发布(这意味着创建)到该端点,那么应该使用另一个端点。替换为viewsets.ModelViewSet
,它将提供所有CRUD方法。别忘了导入模块(+more info)。您试图自己构建URL,这是不正确的,drf提供routers来自动构建它们。照医生说的做,他们解释得很清楚。
一旦您解决了这些问题,您就可以发布到/api/contact/来创建一个新的。你知道吗
相关问题 更多 >
编程相关推荐