Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django request.POST is empty
Im using django, allauth and dj-rest-auth. I'm implementing apple sign in. There is an issue with apple that I need multiple client_id's configured, its because you need a different one for ios en android/web. The issue is discussed here: https://github.com/pennersr/django-allauth/issues/2718 With also some solutions. Anyway, my question is not about that issue. I'm trying to implement a solution but django is not working like I expect it to. The issue is that that I cant access request.POST data. Which I think should be possible. # We add client_id when we make the post request, and we use it to filter for it def list_apps(self, request, provider=None, client_id=None): print(request.POST) --> returns empty dict # print(request.body) --> error # print(request.data) --> error assert False print(request.POST.get('client_id')) apps = super().list_apps(request=request, provider=provider, client_id=client_id) return apps request.body gives the error: django.http.request.RawPostDataException: You cannot access body after reading from request's data stream request.data gives the error: AttributeError: 'WSGIRequest' object has no attribute 'data' I would expect that I can access at least one of request.body, request.data or request.POST. Or else how can I access my posted data? -
Django admin - using dja have a style problem
i have an issue in the style admin of Django, when i enter on the web admin it show this: it show a broken style, with black lines I have this in my user_settings.py STATIC_URL = 'static/' STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static'), ] STATIC_ROOT = os.path.join(BASE_DIR, 'static') MEDIA_ROOT = '/srv/media' MEDIA_URL = 'media/' The version of python is 3.12.3 and Django is 4.2 Any suggestions on how to resolve this problem would be greatly appreciated. -
CSRF Failed: CSRF token missing
I am writing my code in django python, Here is my view.py @csrf_exempt @api_view(['POST']) def Userlogin1(request): print('login working') username = request.data.get('username') password = request.data.get('password') user = authenticate(request=request._request, username = username, password = password) if user is not None: login(request._request, user) return Response({'message': 'login successful.'}, status=status.HTTP_200_OK) return Response({'error': 'Invalid credentials.', 'user':user, 'username':username, 'password':password}, status=status.HTTP_401_UNAUTHORIZED) when i run this on the postman, on first POST request, postman returning a correct response <'message': 'login successful.> but on second and further hit, post man throwing 403 error with this message { "detail": "CSRF Failed: CSRF token missing." } after removing the cookies from postman, it can run once but shows again same issue I disabled the csrf token added CSRF_TRUSTED_ORIGINS created custom -
Python project wrongly linked to Django
I'm pretty new with Django and I'm making a Flight Searching App with the Amadeus API. I've made it so, that it creates a .csv file with the cheapest flights from one destination to another. I now want to create a web application that lets the user enter cities and dates and displays the .csv file. I've made the HTML template but whenever I click on "Search" I get thrown a 404 Error. I think there is an error with urls.py or views.py but can't seem to figure it out. This is my views.py from django.shortcuts import render import requests import pandas as pd def search_flights(request): if request.method == 'POST': origen = request.POST.get('origen') destino = request.POST.get('destino') fecha_ida = request.POST.get('fecha_ida') fecha_regreso = request.POST.get('fecha_regreso') params = { "originLocationCode": origen, "destinationLocationCode": destino, "departureDate": fecha_ida, "returnDate": fecha_regreso, "adults": 1, "max": 7 } url = "https://test.api.amadeus.com/v2/shopping/flight-offers" access_token = "*********************" headers = { "Authorization": f"Bearer {access_token}" } response = requests.get(url, headers=headers, params=params) if response.status_code == 200: resultados = response.json().get("data", []) vuelos_data = [] for vuelo in resultados: price = vuelo.get("price", {}).get("total", "N/A") currency = vuelo.get("price", {}).get("currency", "N/A") for itinerary in vuelo.get("itineraries", []): for segment in itinerary.get("segments", []): departure = segment.get("departure", {}) arrival = segment.get("arrival", {}) carrier_code … -
How to use ChoiceField and ModelChoiceField with allauth Templates?
Based on the default allauth Templates I want to build a Custom SignUp Form which also includes ChoiceField and ModelChoiceField. Therefore I did the following adjustments: accounts/models.py class Country(models.Model): name = models.CharField(max_length=20, unique=True) def __str__(self): return self.name class CustomUser(AbstractUser): SALUTATION = ( ('m', _('Mr')), ('f', _('Mrs')), ) salutation = models.CharField( max_length=1, choices=SALUTATION, blank=True, null=True ) country = models.ForeignKey( Country, on_delete=models.PROTECT, verbose_name=_('Country'), blank=True, null=True ) accounts/forms.py class CustomSignupForm(forms.Form): salutation = forms.ChoiceField(widget=Select, choices=CustomUser.SALUTATION, initial=CustomUser.SALUTATION) country = forms.ModelChoiceField(queryset=Country.objects.all(), initial=Country.objects.all()) templates/allauth/elements/field.html {% load allauth %} {% if attrs.type == "select" %} <select name="{{ attrs.name }}" id="{{ attrs.id }}" class="form-select mb-3"> {% for option in attrs.value %} <option value="{% if option.0 %}{{ option.0 }}{% else %}{{ option.id }}{% endif %}"> {% if option.1 %} {{ option.1 }} {% else %} {{ option }} {% endif %} </option> {% endfor %} </select> {% elif attrs.type == "checkbox" or attrs.type == "radio" %} ... Options only get populated to attrs.value when passing 'initial' parameter in the form. Shouldn't this be provided by 'choices' or 'queryset' parameter instead? Is there an option to get the values from attrs object in a different way? -
How to handle teardown using django-tenant?
I'm using django-tenant and having trouble when i try to create my tests. I had to create a setup_tenant class to create a teardown before testing, because to access the restaurant table, I had to create the tenant upstream. However, when my tests finish successfully, I get an error during teardown: ERROR restaurants/tests.py::RestaurantTests::test_update_restaurant - django.db.utils.ProgrammingError: relation "restaurants_restaurant" does not exist This is the full error: restaurants/tests.py::RestaurantTests::test_update_restaurant PASSED [100%] restaurants/tests.py::RestaurantTests::test_update_restaurant ERROR [100%] ======================================================================================================= ERRORS ======================================================================================================= ____________________________________________________________________________ ERROR at teardown of RestaurantTests.test_update_restaurant _____________________________________________________________________________ self = <django.db.backends.utils.CursorWrapper object at 0x108b084a0> sql = 'SELECT "restaurants_restaurant"."id", "restaurants_restaurant"."name", "restaurants_restaurant"."owner_id", "restaura... "restaurants_restaurant"."tenant_id" FROM "restaurants_restaurant" WHERE "restaurants_restaurant"."tenant_id" IN (%s)' params = (1,), ignored_wrapper_args = (False, {'connection': <DatabaseWrapper vendor='postgresql' alias='default'>, 'cursor': <django.db.backends.utils.CursorWrapper object at 0x108b084a0>}) def _execute(self, sql, params, *ignored_wrapper_args): # Raise a warning during app initialization (stored_app_configs is only # ever set during testing). if not apps.ready and not apps.stored_app_configs: warnings.warn(self.APPS_NOT_READY_WARNING_MSG, category=RuntimeWarning) self.db.validate_no_broken_transaction() with self.db.wrap_database_errors: if params is None: # params default might be backend specific. return self.cursor.execute(sql) else: > return self.cursor.execute(sql, params) This is my Restaurant model: from customer.models import CustomerTenant class Restaurant(models.Model): name = models.CharField(max_length=255) owner = models.ForeignKey(User, related_name="restaurants", on_delete=models.CASCADE) description = models.TextField(blank=True, default="") created_at = models.DateTimeField(auto_now_add=True) tenant = models.ForeignKey(CustomerTenant, on_delete=models.CASCADE, related_name="restaurants") def __str__(self): return self.name` … -
nginx gives django static status 200 inside docker, but it is not shown
I have a static directory in my nginx container and when I go to http://localhost/admin it gives me nginx | 1.1.1.1 - - [10/Dec/2024:12:41:17 +0000] "GET /static/admin/css/base.css HTTP/1.1" 200 21544 "http://localhost/admin/login/? next=/admin/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36" but it doesn’t show up, what’s the error? P.S in developer mode in Networks I see loaded static, I cleared the cache, in my html there is {% load static %} docker-compose: django: container_name: django build: context: django command: gunicorn -w 4 --bind 0.0.0.0:9000 src.wsgi:application working_dir: /django/src volumes: - ./django:/django - static_volume:/django/src/static env_file: - django/.env depends_on: - django_postgres ports: - "9000:9000" nginx: image: nginx:latest container_name: nginx ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf - static_volume:/static depends_on: - django environment: - NGINX_LOGGING_STDOUT=true volumes: static_volume: nginx.conf events { worker_connections 1024; } http { server { listen 80; server_name localhost; location /static/ { alias /static/; access_log /dev/stdout; error_log /dev/stderr debug; } location /favicon.ico { access_log off; return 204; } location ~* \.map$ { log_not_found off; access_log off; } location / { proxy_pass http://django:9000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } error_log /var/log/nginx/error.log debug; } } settings.py DEBUG = False STATIC_URL = '/static/' STATICFILES_DIRS = … -
How to get the method name with the url using django.urls.get_resolver()
I am getting these urls with django's get_resolver() function for a class: ^api/asset_management/^^get_assets/$ ^api/asset_management/^^get_assets\.(?P<format>[a-z0-9]+)/?$ ^api/asset_management/^^get_assets/(?P<pk>[^/.]+)/$ ^api/asset_management/^^get_assets/(?P<pk>[^/.]+)\.(?P<format>[a-z0-9]+)/?$ I also want the name of the method where each of these url is redirected e.g. Get, Post etc. The class is a simple ModelViewSet and is registered by the DefaultRouter. -
Django socket on Digitalocean, path not found
INSTALLED_APPS = [ 'daphne', 'channels', ] ASGI_APPLICATION = 'HungerPlace.asgi.application' CHANNEL_LAYERS = { 'default': { "BACKEND": "channels_redis.core.RedisChannelLayer", "CONFIG": { "hosts": [REDIS_URL], }, }, } consumers.py class OrderConsumer(AsyncWebsocketConsumer): # Cambiato a AsyncWebsocketConsumer async def connect(self): user = self.scope["user"] struttura_id = await self.get_user_structure_id(user) if user.is_authenticated and struttura_id: self.group_name = f"orders_{struttura_id}" await self.channel_layer.group_add(self.group_name, self.channel_name) await self.accept() else: await self.close() async def disconnect(self, close_code): if hasattr(self, "group_name"): await self.channel_layer.group_discard(self.group_name, self.channel_name) async def send_order(self, event): if "data" in event: # await self.send(event["data"]) await self.send(text_data=json.dumps(event["data"])) else: print(f"Received event without 'data': {event}") async def receive(self, text_data): # Log per il debug await self.send(text_data="Message received") @sync_to_async def get_user_structure_id(self, user): """Esegue operazioni sincrone in un thread separato.""" if user.is_authenticated and user.profilo.strut: return user.profilo.strut.id return None routing.py from django.urls import path, re_path from .consumers import OrderConsumer websocket_urlpatterns = [ path('ws/orders/', OrderConsumer.as_asgi()), ] asgi.py os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'HungerPlace.settings') django_asgi_app = get_asgi_application() from login.routing import websocket_urlpatterns application = ProtocolTypeRouter({ 'http': django_asgi_app, 'websocket': AuthMiddlewareStack( URLRouter( websocket_urlpatterns ) ), }) the project is using django-allauth, channel, daphne. But the main think is when I am on localhost it does work. when I deploy on digitalocean (it is not a droplet, it is an app), it does not find the url Not Found: /ws/orders/ I am trying a … -
Is there a solution to type hint a django annotation?
I have a django project which I am trying to type and add type checking through mypy. I want to use django annotations to get more informations about an object. This operation adds properties to a class already declared. The package django-stubs already provides a typing class WithAnnotations that should do the work but it doesn't. To be clear, I simply want this code to pass mypy from django.db import models class User(models.Model): first_name: models.CharField() last_name: models.CharField() class Team(models.Model): users: models.ManyToManyField(User) class House(models.Model): inhabitants: models.ManyToManyField(User) users = User.objects.all() for user in users: print(user.first_name) users_with_teams = Users.objects.all().annotate(teams_ids=ArrayAgg(...)) users_with_teams_and_houses = users_with_teams.annotate(houses_ids=ArrayAgg(...)) for user in users_with_teams: print(user.first_name) print(user.teams_ids) print(user.houses_ids) If I try to run it I get errors object User has no attribute teams_ids or object User has no attribute houses_ids I thought it would be nice to have it in functions: from typing import TypeVar T = TypeVar("T") def annotate_teams(query: QuerySet[T]) -> QuerySet[SomethingElseButWhat]: return query.annotate(teams_ids=ArrayAgg(...)) but I don't know which type my function should return. Does any of you know if what I am looking for is possible ? -
What's the proper way to conclude the OAuth2 flow in Django?
To keep the story short, I've acquired all the necessary tokens from Google using the "auth code" flow. So currently, I have the following tokens at my disposal: 1. access_token 2. refresh_token 3. id_token 4. verified JWT token The next step is to log in the user using the provided login() method from django.contrib.auth. This creates a sessionId which is then used to "verify" that a user is logged in. In my current development setup, I'm just using the email from the JWT token to create the session: from django.contrib.auth import login from django.contrib.auth.models import User def login_provider(request): # 1. Get the user info from JWT token (assume I have it) user_obj = jwt_token.user # 2. Create a Django user instance user, created = User.objects.get_or_create(email=user_obj.email) # 3. Log the user in login(request, user) # 4. Redirect the user somewhere else return redirect("somewhere-else/") I've taken all the necessary steps to ensure the Google OAuth2 flow part is secure but am I correct in assuming that this way of logging the user in isn't secure since I'm basically using just the users email? What's the correct way to do this? -
Logs not getting sent to Datadog when running Django shell inside a container
The logs that are created by the code running inside the container do get sent to Datadog, but when I'm in a shell session inside the container those logs get outputted in the terminal, but not sent to Datadog. Therefore, once I leave the session (if I don't copy and paste the logs into a file), they are forever lost. TL;DR; Datadog Agent runs inside the container, but not inside the shell session inside the container How can I make it so that the logs produced inside the shell session also get sent to Datadog ? -
How to add element in Django QuerySet?
I have model Report and GroupReport. They have many-to-many relation. I can easily get QuerySet[GroupReport] for all GroupReport instance: Group Name 1: Report Name 1 Report Name 2 Group Name 2: Report Name 2 Report Name 10 ... and etc. But i need to add entry "Total Reports" to QuerySet[GroupReport]: Group All reports: Report Name 1 Report Name 2 Report Name 5 ... and another reports from QuerySet[Report] I can't store group "Total Reports" in database because using object permissions for QuerySets. It is necessary to generate the group dynamically. My Serializer expect correct queryset. How can i do this? I tried to do it something like this: def get_queryset(self): groups = get_objects_for_user( user=self.request.user, perms=view_reportgroup, klass=ReportGroup.actived_objects, accept_global_perms=False ) reports = get_objects_for_user( user=self.request.user, perms=view_report, klass=Report.actived_objects, accept_global_perms=False ) total = ReportStorage(id=None, name='Total Reports') total.reports.set( Report.actived_objects.filter( Q(id__in=reports) | Q(groups__in=groups) ).distinct() ) return (groups | total).prefetch_related( Prefetch( 'reports', queryset=ReportStorage.prefetch_related( Prefetch( 'reportstorage', queryset=super().get_queryset() ) ) ) ) But got expected error: "needs to have a value for field 'id' bla-bla..." for total.reports.set. I was also thinking about adding ReportStorage to groups._result_cache. But I don't understand how it should look. Maybe there are more correct ways such as custom SQL, converting QuerySet to List? -
Kafka consumer is missing messages during deployment
My consumers are inherited from the BasicKafkaConsumerV2. During deployments when the pods are rotating I am missing few messages which is visible from the offsets printed after the manual commit(). Kafka is not supposed to miss messages if not committed. What could be the problem here. run command: - name: order-consumer image: KUSTOMIZE_PRIMARY imagePullPolicy: Always command: [ # Invoking wait for pgbouncer script "/wait-for.sh", "localhost:6432", "-s", "-t", "30", "--", # Starting main process "ddtrace-run", "python", "manage.py", "run_order-consumer", ] Consumer: class BasicKafkaConsumerV2: group_id = None # str consumer_name = None # str newrelic_application = None topic_handlers = {} # dict DB_EXCEPTION_RETRY_TIMEOUT = 5 # seconds DLQ_TOPIC = None def __init__(self, latest_offset=False): """Inits the Consumer and subscribes to the topics""" self.consumer = KafkaConsumer( bootstrap_servers=["broker1", "broker2"], group_id=self.group_id, enable_auto_commit=False, auto_offset_reset="latest", ) self.topics_list = list(self.topic_handlers.keys()) self.consumer.subscribe(self.topics_list) self.newrelic_application = newrelic.agent.application() logger.info( f"{[self.consumer_name]} subscribed to {self.topics_list} with auto_offset_reset {self.auto_offset_reset}" ) def message_handler_wrapped( self, topic: str, kafka_msg_value: bytes, headers: dict, consumed_message=None, ): """Processes the message Also handles any DB exceptions by retrying the event after a period """ with tracer.trace( settings.DD_KAFKA_RESOURCE_NAME, service=settings.DD_SERVICE, resource=self.group_id, span_type="consumer", ) as span: try: json_data = json.loads(kafka_msg_value) dict_headers = convert_tuple_to_dict(headers) span.set_tag("topic", topic) span.set_tag("event", self.get_event_name(json_data)) self.message_handler(topic, json_data, dict_headers) except (InterfaceError, OperationalError) as e: """Sleep for … -
Create non existing tag with Django-select2
I am using django-select2 to autocomplete a tag field on a model. I would like to let user write any tag in the field, and create it if the tag doesn't exists... # models.py class Version(models.Model): ... tags = models.ManyToManyField(Tag, blank=True) class VersionTagWidget(s2forms.ModelSelect2TagWidget): search_fields = [ "nom__icontains", ] class VersionEditViewForm(forms.ModelForm): def __init__(self, *args, **kwargs): ... class Meta: model = Version widgets = { "tags": VersionTagWidget, } I can autocomplete value (and select in a dynamic dropdown), but if type in a non-existing (in my example, I entered 'DoesNotExist') value and submit the form, I get : Exception Value: Field 'id' expected a number but got 'DoesNotExist'. I tried a lot of things to solve the pb.... But no clue here... -
Safely Storing Passwords and Database Credentials in Django [closed]
Does anyone here have experience with Django? How can I safely store my passwords, database credentials, and other sensitive information in settings.py? I found it using cryptography but wanted to hear more ideas.. Someone Can help me? -
Adding laos language in Django
I have added the langauge laos in settings.py as follows LANGUAGES = [ ("en", _("English")), ("my", _("Burmese")), ("fr", _("French")), ("km", _("Khmer")), ("th", _("Thai")), ("vi", _("Vietnamese")), ("lo", _("Lao")), ] However, when I load my application I get the error. KeyError at / 'Unknown language code lo.' Seems like the current version of Django does not support the language. Is there a way I can manually add a none existing language in Django? Thank you in-advance. -
Why companies still prefer Django over Fast API for REST APIs developments
Can I get thoughts from working professionals in python domain over why companies still prefer Django over Fast API for REST APIs developments. In python world I see more opportunity of Django over Fast API. So wanted to know the reason about this preference. As in multiple blogs and Generative AI I got to know that Fast API outperforms Django. -
Pydantic/Django Ninja use only existing keys (even with None)
having an app in Django Ninja with schemas: class NumericalFilterSchema(Schema): gt: Optional[int] = None lt: Optional[int] = None gte: Optional[int] = None lte: Optional[int] = None exact: Optional[int] = None class Config(Schema.Config): extra = "forbid" class StringFilterSchema(Schema): contains: Optional[str] = None icontains: Optional[str] = None exact: Optional[str] = None class Config(Schema.Config): extra = "forbid" class InputsSchema(Schema): major_version: Optional[NumericalFilterSchema] = None app_name: Optional[StringFilterSchema] = None class Config(Schema.Config): extra = "forbid" class InputSchema(Schema): filters: InputsSchema class Config(Schema.Config): extra = "forbid" which I then use in the endpoint like this: @router_v1.post( "/apps", tags=["..."], auth=AuthBearer(), ) def dynamic_filter(request: HttpRequest, filters: InputsSchema): query = Q() # import ipdb # ipdb.set_trace() for key, value in filters.dict(exclude_none=True).items(): # key = translate_field(key) # just abstraction between endpoint keys to db keys if isinstance(value, dict): for k, v in value.items(): if v is not None: query &= Q(**{f"{key}__{k}": v}) else: query &= Q(**{key: value}) results = Apps.objects.filter(query) ... Problem: As you can see in the query building I am excluding all the None values which is fine in the most cases for example: { "major_version": { "exact": 3 }, "app_name": { "icontains": "google" } } this will return schema InputsSchema(major_version=NumericalFilterSchema(gt=None, lt=None, gte=None, lte=None, exact=3), app_name=StringFilterSchema(contains=None, icontains='google', exact=None)) which is … -
Method not allowed in fresh django-ninja-extra project
I cant make a post request in my project, now i created a fresh project, because i thought it was a configuration problem. But the Problem persists. The problem is that when i try to make a post request it always gives me a 405 status back. settings.py: # Application definition INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'backend.apps.department', 'ninja_extra' ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] api.py: from ninja_extra import NinjaExtraAPI api = NinjaExtraAPI() api.auto_discover_controllers() department/api.py: from ninja_extra import api_controller, route from django.shortcuts import get_object_or_404 from ninja import Schema from datetime import datetime from .models import department from typing import List class DepartmentIn(Schema): name: str last_modified: datetime user_id: int class DepartmentOut(Schema): id: int name: str last_modified: datetime @api_controller('department/') class DepartmentController: @route.get("all/", response=List[DepartmentOut]) def get_departments(self): department_list = department.objects.all() return department_list @route.get("{department_id}/", response=DepartmentOut) def get_department(self, department_id: int): record = get_object_or_404(department, id=department_id) return record @route.post("create/") def create_department(self, payload: DepartmentIn): record = department.objects.create(**payload.dict()) return {"id": record.id} models.py: from django.db import models from django.conf import settings class department(models.Model): name = models.CharField(max_length=50) last_modified = models.DateTimeField(auto_now=True, auto_now_add=False) user_id = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) The Problem i get: Response body Method not allowed Response headers allow: GET content-length: 18 content-type: text/html; charset=utf-8 … -
In Django REST Framework, why does raising serializers.ValidationError return errors in different format in validate() and create() methods?
I am working on a DRF project and have a serializer like: class SomeSerializer(serializers.Serializer): number_field = serializers.IntegerField(required=False, min_value=25, max_value=100) In my settings.py, I have REST_FRAMEWORK = { other settings.... 'EXCEPTION_HANDLER': 'apps.utils.exceptions.custom_exception_handler', } In the custom exception handler, I handle ValidationError as follows: def custom_exception_handler(exc, context): # Call REST framework's default exception handler first response = exception_handler(exc, context) messages = None code = None detail = None if response is not None: # Map specific exceptions to custom error codes if isinstance(exc, ValidationError): code = "validation_error" detail = "One or more fields failed validation." messages = exc.detail status_code = status.HTTP_400_BAD_REQUEST # After checking for other errors here in between else: code = "unexpected_error" detail = response.data.get("detail", "An unexpected error occurred.") messages = response.data.get("messages", {"error": str(exc)}) """ In between the if and else, AuthenticationFailed, PermissionDenied, NotFound, are handled. Add an appropriate code and return in the format response.data = { "detail": detail, "code": code, "messages": messages } """ The custom exception handler is configured to return the error in the format shown below. But it only happens if I validate the min and max range inside the create() method (without min_value and max_value defined on the serializer field itself) { "detail": "One … -
When I dockerize django vue3 app django container does not work
I am learning docker and while I dockerize my django vue3 app I got error. Dockerfile: FROM python:3.11-slim RUN apt-get update && apt-get install -y \ libpq-dev gcc curl \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* WORKDIR /backend/project COPY requirements.txt /backend/ RUN pip install --no-cache-dir -r /backend/requirements.txt COPY . /backend/ RUN chown -R www-data:www-data /backend USER www-data ENV PYTHONUNBUFFERED=1 ENV PYTHONDONTWRITEBYTECODE=1 EXPOSE 8000 CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"] Docker-compose: version: '3.9' services: web: build: context: . dockerfile: dockerfile container_name: c_django command: python manage.py runserver 0.0.0.0:8000 volumes: - ./backend:/app ports: - 8000:8000 environment: ALLOWED_HOSTS: '*' DEBUG: 'True' SECRET_KEY: random_secret_key DATABASE_NAME: fitness DATABASE_USER: postgres DATABASE_PASSWORD: 123456 DATABASE_HOST: db DATABASE_PORT: 5432 REDIS_URL: redis://redis:6379/1 depends_on: - db - redis networks: - frontend_backend db: image: postgres:15 container_name: c_postgres environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: 123456 POSTGRES_DB: fitness ports: - 5432:5432 volumes: - postgres_data:/var/lib/postgresql/data frontend: build: context: ../frontend container_name: c_frontend ports: - 8080:80 depends_on: - web networks: - frontend_backend nginx: image: nginx:latest container_name: c_nginx volumes: - ./nginx/nginx.conf:/etc/nginx/conf.d - ./frontend/dist/:/usr/share/nginx/html ports: - 80:80 depends_on: - frontend networks: - frontend_backend redis: image: redis:8.0-M02-alpine container_name: c_redis ports: - 6379:6379 networks: - frontend_backend volumes: postgres_data: networks: frontend_backend: driver: bridge When I docker compose up I got this error for django … -
IIS does not pass on REMOTE_USER with HTTP Platform Handler
I have a Django server application that I am running with IIS on Windows Server (using HTTP Platform Handler). I would like to use Windows Authentication. I have enabled Windows Authentication in the server settings in IIS. If I understood the documentation correctly, I would expect that for each request, IIS would then send a REMOTE_USER object in the HTTP request to the Django server. However, this does not happen. REMOTE_USER is neither a server environment variable nor in request.META. In the IIS logs (The logs in C:\inetpub) I can see that it recognises my user, but IIS does not seem to forward that user information to the Django server. A line in the logs looks e.g. as follows: 2024-12-11 12:10:20 <SERVER IP> GET /<PATH> - <PORT> <DOMAIN>\<USERNAME> <CLIENT IP> <BROWSER DATA> ... So, IIS clearly does perform Windows Authentication, and it works, but that information somehow never makes it to the Django server. I have tried using Django's RemoteUserMiddleware, which does not change the behaviour. Is there some additional setting that I am missing? -
'{% load static %}' doesn't seem to get picked up by vs code
enter image description here The text is still white and there's no indicator as to if it's working or not. I don't know if this is because of a screw up in my part or an issue with VS code. I am unfamiliar with troubleshooting methods for this, please let me know if there are any. Thank you in advance for any help. -
what is the correct way to pass context to a playwright function when using python django as the basis for a webapp?
I've got a web app that I built first with Flask, then totally rebuilt with Django, to get advantage of the admin interface. It builds a flyer for a kids football match, using the context to overlay on a background image via css absolute position. Once the coach is happy with the image, a button calls a Generate function, which opens a browser with playwright and passes the session data to recreate the image and allow the coach to download it. When the coach is viewing the image the text fields are populated from the context. this all works fine. def image(request): ... some other bits ... for key in request.session.keys(): context[key] = request.session[key] return render(request, 'coaches/image.html', context) this is an example from the template that shows how the text is added from context. I'm using Django Template engine. {% for player in squad %} <td> <span class="playernumber">{{ player.number }}</span> <span class="playerfirstname">{{ player.first }}</span> <span class="playerlastname">{{ player.last }}</span> </td> {% if forloop.counter|divisibleby:2 %} </tr> <tr> {% endif %} {% endfor %} the same template code doesnt work when the playwright browser view is invoked. the view is fine, the template is fine, but calling the variables from context doesnt work. …