URL зарегистрированного маршрутизатора возвращает 404 - PullRequest
0 голосов
/ 17 января 2019

Я использую django и rest-framework для разработки сайта. У меня есть пользовательское приложение, в котором модели показаны ниже:

class User(AbstractUser):
    pass

class Comment(models.Model):
    comment_text = models.TextField()
    author = models.ForeignKey(settings.AUTH_USER_MODEL,default=DefaultUser,on_delete=models.SET_DEFAULT,related_name='author')
    # DefaultUser is similar to AnonymousUser in django.contrib.aut.models
    date = models.DateTimeField(default=now)
    class User_Comment(Comment):
    on_user = models.ForeignKey(User,on_delete=models.CASCADE,related_name='on_user',default=DefaultUser)

class User_Comment(Comment):
    on_user = models.ForeignKey(User,on_delete=models.CASCADE,related_name='on_user',default=DefaultUser)

так что это в основном система комментариев, где пользователь может комментировать другого пользователя.
Я использовал сериализатор остального фреймворка для публикации комментариев:

class User_CommentSerilizer(serializers.ModelSerializer):
    comment = User_Comment
    class Meta:
       model = User_Comment
       fields = ('comment_text','on_user')
    # extra_kwargs =  {'password': {'write-only': True}}
    def create(self, validated_data):
        comment = User_Comment(
        author= User.objects.filter(username=self.context['request'].user)[0],
        on_user= User.objects.filter(username=validated_data["on_user"])[0],
        validated=False,
        comment_text= validated_data["comment_text"]
    )
    comment.save()
    return comment

и затем с помощью UserCommentViewSet в views.py:

class User_CommentViewSet(viewsets.ViewSet):
    serializer_class = User_CommentSerilizer
    queryset = User_Comment.objects.all()

и, наконец, в файле urls я зарегистрировал вид:

router = DefaultRouter()
router.register('profile' , views.UserViewSet)
router.register('comment' , views.User_CommentViewSet)
router.register('login' ,views.LoginViewSet, base_name='login')
urlpatterns = [
    path('users/', include(router.urls)),
]

профиль и логин роутеры работают нормально. однако маршрутизатор комментариев вообще не отображается (и возвращает 404), не вызывая других ошибок. это как роутер не зарегистрирован.
Я не могу понять, в чем проблема, хотя я узнал, что это как-то связано с частью набора запросов. Я был бы очень признателен, если бы кто-нибудь мог понять это.

1 Ответ

0 голосов
/ 17 января 2019

ошибка была просто потому, что я использовал ViewSet вместо ModelViewSet в функции User_CommentViewSet.

...