У меня есть проект Django, в котором я сделал 3 разных приложения: «блог», «пользователи», «api».
Это веб-сайт, на котором можно публиковать сообщения с помощью модельного сообщения. Я хочу использовать Django Rest API для доступа к модели. Это работает, но это портит некоторые перенаправления UpdateView и DeleteView «блога».
Я думаю, что это может быть проблема с использованием DefaultRouter ()?
Когда я пытаюсь использовать представления блога / блога PostupdateView / PostDeleteView (унаследованные от UpdateView и DeleteView), я продолжаю перенаправляться на / api / blog / postid / вместо того, чтобы просто получить доступ к своему detailView, где путь должен быть просто / blog / postid /
и я не могу понять, почему.
Мой пост Модель:
class Post(models.Model):
...
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
мой сериализатор:
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('id', 'title', 'content', 'date_posted', 'author', 'rooms')
мой API-интерфейс для сообщения:
class PostView(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = PostSerializer
Мои файлы URL:
main urls.py:
urlpatterns = [
...
path('', include('blog.urls')),
path('api/',include('api.urls')),
]
blog / urls.py:
urlpatterns = [
...
path('post/<int:pk>/', PostDetailView.as_view(),name='post-detail'),
path('post/new/', PostCreateView.as_view(),name='post-create'),
...
]
api / urls.py:
router = routers.DefaultRouter()
router.register('post', views.PostView)
urlpatterns = [
path('',include(router.urls))
]
мой PostCreateView в блоге / views.py
class PostCreateView( LoginRequiredMixin, UserPassesTestMixin, CreateView):
model = Post
fields = ['title', 'content', 'rooms']
def test_func(self):
...
def get_form(self, form_class=None):
...
def form_valid(self, form):
...
При использовании PostCreateView меня следует перенаправить на подробный вид созданной публикации, как это определено в модели Post. Вместо этого меня перенаправляют на URL-адрес API, который генерируется маршрутизатором в файле api / urls.py
.