Как создать конечную точку (GET) с отключенной аутентификацией, где я просто хочу визуализировать данные на карте? Django DRF python

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

Мой проект Django состоит из трех приложений: ядро, пользователь и маркеры.

Приложение "пользователь" выполняет POST, GET, PUT, PATCH и POST. Приложение "маркеры" позволяет пользователю создавать (POST) геолокации и другую информацию, связанную с координатами (имя, координаты, изображения...).

Теперь моя задача состоит в том, чтобы создать новую конечную точку, где анонимный пользователь/неаутентифицированный пользователь мог бы визуализировать данные (на карте), созданные на основе данных пользователей.

Я создал карту, внутри папки markers и не смог добиться успеха в визуализации данных из-за аутентификации. Есть подсказка или пример, как включить визуализацию? Спасибо

GitHub repo https://github.com/silveiratcl/sun_coral_report_app

пользовательская модель models.py:

class UserManager(BaseUserManager):

def create_user(self, email, password=None, **extra_fields):
    """Creates and saves a new User"""
    if not email:
        raise ValueError('User must have an email address')
    user = self.model(email=self.normalize_email(email), **extra_fields)
    user.set_password(password)
    user.save(using=self._db)

    return user

def create_superuser(self, email, password):
    """Creates and saves a new super user"""
    user = self.create_user(email, password)
    user.is_staff = True
    user.is_superuser = True
    user.save(using=self._db)

    return user

маркер модели models.py:

class Marker(models.Model):
"""A marker object."""
user = models.ForeignKey(
    settings.AUTH_USER_MODEL,
    on_delete = models.CASCADE,
)
name = models.CharField(max_length=255)
location = models.PointField()
image = models.ImageField(null=True, upload_to=marker_image_file_path) #image function

def __str__(self):
    """Return string representation."""
    return self.name

marker urls.py

    ```from django.urls import(
    path,
    include,
)
from rest_framework.routers import DefaultRouter

from markers import views
from markers.views import MarkersMapView

router = DefaultRouter()
router.register('markers', views.MarkerViewSet)

app_name = 'markers'

urlpatterns = [
    path('', include(router.urls)),
    path('map/', MarkersMapView.as_view()),
] ```

проект urls.py

  SpectacularAPIView,
  SpectacularSwaggerView,
)
from django.contrib import admin
from django.urls import path, include
from django.conf.urls.static import static
from django.conf import settings

urlpatterns = [
  path('admin/', admin.site.urls),
  path('api/schema/', SpectacularAPIView.as_view(), name='api-schema'),
  path(
      'api/docs/',
      SpectacularSwaggerView.as_view(url_name='api-schema'),
      name='api-docs',
  ),
  path('api/user/', include('user.urls')),
  path('api/markers/', include('markers.urls')),
]

if settings.DEBUG:
  urlpatterns += static(
      settings.MEDIA_URL,
      document_root=settings.MEDIA_ROOT,
  ) ```


[1]: https://github.com/silveiratcl/sun_coral_report_app

Создайте новое представление и сделайте следующее

if request.user != "AnonymousUser":
   #dosomething
else:
  Model.objects.all()

если это представление API используйте self.request.user

он ответит AnonymousUser или с идентификатором пользователя

и передайте его фронтенду

Надеюсь, это поможет

Я не уверен, правильно ли я понимаю ваш вопрос, но вот что я слышу: Вы хотите, чтобы неаутентифицированные пользователи могли создавать объекты Marker

Если это так, сделайте конечную точку публичной, сделайте атрибут user класса Marker Nullible и любой, у кого есть доступ, сможет создать маркер

сделать конечные точки общедоступными: https://techstream.org/Bits/Public-Endpoint-Django-Rest-Framework

Вернуться на верх