Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django "compilemessages" error: Can't find msgfmt (GNU gettext) on Ubuntu VPS
I am trying to compile translation messages in my Django project by running the following command: python manage.py compilemessages However, I get this error: CommandError: Can't find msgfmt. Make sure you have GNU gettext tools 0.15 or newer installed. So then I tried installing gettext. sudo apt update && sudo apt install gettext -y After installation, I still get the same error when running python manage.py compilemessages. Checked if msgfmt is installed by msgfmt --version but it says: command not found OS is Ubuntu and Django version is 4.2.5. How can I resolve this issue and make Django recognize msgfmt? Any help would be appreciated! -
Why do we call super().get_queryset() in Django's get_queryset method?
I have a method in my Django project: def get_queryset(self): queryset = super(OrderListView, self).get_queryset() return queryset.filter(initiator=self.request.user) I don’t understand why we use queryset = super(OrderListView, self).get_queryset() inside get_queryset. What is the purpose of this line? What exactly does it do? Why do we call super() here? Why do we call the same method (get_queryset) inside itself? I've tried to understand it, but explanations so far haven't made it clear to me. I would appreciate a simple and satisfying answer. -
having two lookup field in viewset in DRF
I have three models as fallow customuser class CustomUser(AbstractUser): class Trust_Level_choices(models.TextChoices): basic_user = 'basic_user', 'عضو ابتدایی' member = 'member', 'عضو' moderator = 'moderator', 'ناظر' admin = 'admin', 'راهبر' class Personal_Message_Choices(models.TextChoices): always = 'always', 'همیشه' when_away = 'when_away', 'زمانی که نیستم' never = 'never', 'هرگز' class Previous_Replies_Choices(models.TextChoices): always = 'always', 'همیشه' unless_previously_send = 'unless_previously_send', 'مگر اینکه قبلا ارسال شده باشد' never = 'never', 'هرگز' class Mailing_list_mode_Choices(models.TextChoices): send_email_for_new_post = 'send_email_for_new_post', 'ارسال ایمیل برای هر پست جدید' send_email_for_new_post_except_mine = 'send_email_for_new_post_except_mine', 'ارسال ایمیل برای هر پست جدید به جز پست های خودم' class Topic_As_New_Choices(models.TextChoices): i_have_not_viewed_them_yet = 'I_have_not_viewed_them_yet', 'آنهایی که هنوز ندیده ام' created_in_the_last_day = 'Created_in_the_last_day', 'در روز گذشته ایجاد شده باشد' created_in_the_last_2_days = 'Created_in_the_last_2_days', 'در دو روز گذشته ایجاد شده باشد' created_in_the_last_week = 'Created_in_the_last_week', 'در هفته گذشته ایجاد شده باشد' created_in_the_last_2_weeks = 'Created_in_the_last_2_weeks', 'در دو هفته گذشنه ایجاد شده باشد' created_since_i_was_here_last = 'Created_since_i_was_here_last', 'پس از آخرین باری که اینجا بودم ایجاد شده باشد' id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) email = models.EmailField(max_length=256 , unique=True) # username = None USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['USERNAME_FIELD'] session_token = models.CharField(max_length=10, default=0) date_joined = models.DateTimeField(verbose_name='تاریخ عضویت',auto_now_add=True, editable=True) trust_level = models.CharField(choices=Trust_Level_choices, verbose_name='سطح اعتماد', max_length=20) profile_picture = models.ImageField(verbose_name='تصویر پروفایل') send_email_for_p_m = models.CharField(choices=Personal_Message_Choices, verbose_name='ارسال ایمیل برای پیام های شخصی', max_length=20) send_email_when_q_r_m_na_in_w = … -
Django Custom User Model - "The given username must be set" Error in Registration View
I'm working on a Django registration flow where users receive a tokenized link to complete their registration. During the process, I associate a UserProfile instance with the user using get_or_create(). However, I encounter an error stating that the username must be set. from django.contrib.auth import get_user_model from django.contrib.auth.tokens import default_token_generator from django.utils.http import urlsafe_base64_decode from django.shortcuts import render, redirect from django.contrib import messages from .models import UserProfile from .forms import RegistrationForm User = get_user_model() def complete_registration_step1(request, uidb64, token): try: uid = urlsafe_base64_decode(uidb64).decode() user = User.objects.get(pk=uid) # Check if the token is valid and hasn't been used if user.token_used or not default_token_generator.check_token(user, token): messages.error(request, "The confirmation link is invalid or expired.") return redirect('home') except (TypeError, ValueError, OverflowError, User.DoesNotExist): user = None if user is not None: if request.method == 'POST': form = RegistrationForm(request.POST) if form.is_valid(): user_profile, created = UserProfile.objects.get_or_create(user=user) # Error occurs here form_instance = form.save(commit=False) user_profile.first_name = form_instance.first_name user_profile.birth_date = form_instance.birth_date user_profile.gender = form_instance.gender user_profile.save() messages.success(request, "First step of registration completed.") # return redirect('complete_registration_step2', uidb64=uidb64, token=token) else: form = RegistrationForm() return render(request, 'registration/complete_registration.html', {'form': form}) else: messages.error(request, "User does not exist.") return redirect('home') from django.contrib.auth.models import AbstractUser, BaseUserManager from django.db import models class CustomUserManager(BaseUserManager): def create_user(self, email, username=None, password=None, **extra_fields): … -
Cognito - AdminInitiateAuth fails with NotAuthorizedException
We are currently implementing an app and its corresponding backend with three options to login / signup, Google, Apple and via Email/Password. When a user chooses Apple or Google and the user is not existing in Cognito, we are creating the user with admin_create_user of boto3.client. So far so good, the user is created. When it comes to handling the login, we are encountering problems with the CUSTOM_AUTH for admin_initiate_auth: try: initiate_resp = cognito_client.admin_initiate_auth( UserPoolId=settings.AWS_COGNITO_USER_POOL_ID, ClientId=settings.AWS_COGNITO_CLIENT_ID, AuthFlow="CUSTOM_AUTH", AuthParameters={ "USERNAME": email, "SECRET_HASH": get_secret_hash(email) } ) print(initiate_resp) except ClientError as e: return {"error": f"admin_initiate_auth failed: {str(e)}"}, 400 We have added, as per documentation the lambda triggers to for define_auth_challenge: def lambda_handler(event, context): """ Cognito calls this to decide which challenge to present next (or issue tokens). We'll always present a CUSTOM_CHALLENGE if there's no successful challenge yet. """ # event["request"]["session"] contains prior challenge attempts. # If empty, it's the user's first attempt this auth session. session_list = event["request"].get("session", []) if len(session_list) == 0: # First time => present the custom challenge event["response"]["challengeName"] = "CUSTOM_CHALLENGE" event["response"]["issueTokens"] = False event["response"]["failAuthentication"] = False print("DefineAuthChallenge -> Presenting CUSTOM_CHALLENGE (first attempt)") else: # Check the last challenge last_challenge = session_list[-1] if last_challenge.get("challengeResult") is True: # If they … -
How to intergrate and work with django and elasticsearch?
So, I recently encountered with elasticsearch and find it really helpful to integrate with django for faster api response. But, did not able to find a good installation documentation of elasticsearch with django with step by step installation of elasticsearch and then how to integrate it with django. I tried to pull the elasticsearch image and run the container on -p 4200:4300 but it keeps getting error. still manages to run but again getting Active licence error. added in settings.py ELASTICSEARCH_DSL = { 'default': { 'hosts': ['http://localhost:9300'], 'http_auth': ('elastic', 'password'), }, } Getting Connection Error. what should be username and password when first setup? what should be the url? does we really need a certificate? where to download certificate? does we really need to configure each time while project setup? PS. I am really beginner in elasticsearch really need to learn it. -
Celery on docker to generate files in the application directory
I have a Django application with Celery as delayed task mechanism. There are some file operations which I'd like to transfer to Celery to relieve Django of time consuming processes. Here's how my docker-compose looks: ... services: django: &django build: context: . dockerfile: ./compose/local/django/Dockerfile image: my_project_local_django container_name: my_project_local_django depends_on: - postgres - redis volumes: - .:/app:z - ./media:/app/media # To make sure that /media hooks up to Celery. env_file: - ./.envs/.local/.django - ./.envs/.local/.postgres ports: - "8000:8000" command: /start postgres: ... redis: image: redis:6 container_name: my_project_local_redis volumes: - my_project_local_local_redis_data:/data celeryworker: <<: *django image: my_project_local_celeryworker container_name: my_project_local_celeryworker volumes: - ./media:/app/media # To ensure Celery has access to local /media directory. depends_on: - redis - postgres ports: [] command: /start-celeryworker celerybeat: <<: *django image: my_project_local_celerybeat container_name: my_project_local_celerybeat volumes: - ./media:/app/media # To ensure Celery has access to local /media directory. depends_on: - redis - postgres - django restart: always ports: [] command: /start-celerybeat flower: <<: *django image: my_project_local_flower container_name: my_project_local_flower ports: - "5555:5555" command: /start-flower And here's the task. So far I'm just testing a simple scenario of generating a blank file. ... @celery_app.task() def generate_file(object_id): lock_key = f"generate_file_task_lock:{object_id}" # Try to acquire the lock if redis_client.set(lock_key, "locked", ex=60, nx=True): # `nx=True` ensures … -
How to Modify Django-Allauth for Passwordless Authentication Using JWT and Email Links?
I am trying to modify Django-Allauth to allow login and registration without a password. When a user attempts to register or log in, an email should be sent to their inbox containing a link with a JWT token. If the token is valid, the user should be authenticated. I am using Django templates but haven't found clear documentation or articles on how to implement this. How can I achieve this using Django-Allauth? Any guidance or references would be greatly appreciated! Thank you. i tried the following implementation using allauth : # setting.py ACCOUNT_EMAIL_REQUIRED = True LOGIN_REDIRECT_URL = "/admin" ACCOUNT_AUTHENTICATION_METHOD = "email" ACCOUNT_CONFIRM_EMAIL_ON_GET = True ACCOUNT_EMAIL_VERIFICATION = True ACCOUNT_USERNAME_REQUIRED = False ACCOUNT_USER_MODEL_USERNAME_FIELD = None # Remove `username` field ACCOUNT_PASSWORD_REQUIRED = False # Allows empty passwords ACCOUNT_SESSION_REMEMBER = True ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = True # Auto-login after confirmation ACCOUNT_EMAIL_VERIFICATION = "mandatory" # Ensures users verify their email ACCOUNT_SIGNUP_PASSWORD_ENTER_TWICE = False AUTH_USER_MODEL = "users.CustomUser" ACCOUNT_ADAPTER = "users.adapters.CustomAccountAdapter" ACCOUNT_FORMS = { "signup": "users.forms.CustomSignupForm", "login": "users.forms.CustomLoginForm", } EMAIL_BACKEND = "django.core.mail.backends.console.EmailBackend" # forms.py file from allauth.account.forms import SignupForm from django import forms class CustomSignupForm(SignupForm): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) if "password1" in self.fields: del self.fields["password1"] # Remove password fields if "password2" in self.fields: del self.fields["password2"] def save(self, … -
How to stop StreamingHttpResponse in Django on Google Cloud Run?
We have integrated the GPT API in our Django application running on Google Cloud Run. When a user makes a request, we send them a response using StreamingHttpResponse from django.http, enabling real-time streaming. However, we currently do not have a way for users to stop an ongoing StreamingHttpResponse. We are looking for a solution to terminate the stream early if needed—without using WebSockets and without relying on Redis or other services that require VPC connectors, as they are costly for us at the moment. Is there a way to achieve this within our existing Google Cloud Run setup? -
"LookupError: No installed app with label 'admin'." when using muppy in django
I have a django + drf application that has no admin site, which works very well for us. However, when using pympler and muppy like this: class DashboardViewSet( SpecialEndpoint, ): def list(self, request, *args, **kwargs): from pympler import tracker tr = tracker.SummaryTracker() [...] tr.print_diff() return Response(...) I get this error: File "src/api/views/case_manager/dashboard/dashboard_viewset.py", line 33, in list tr = tracker.SummaryTracker() File "lib/python3.13/site-packages/pympler/tracker.py", line 45, in __init__ self.s0 = summary.summarize(muppy.get_objects()) ~~~~~~~~~~~~~~~~~^^ File "lib/python3.13/site-packages/pympler/muppy.py", line 42, in get_objects tmp = [o for o in tmp if not ignore_object(o)] ~~~~~~~~~~~~~^^^ File "lib/python3.13/site-packages/pympler/muppy.py", line 17, in ignore_object return isframe(obj) File "lib/python3.13/inspect.py", line 507, in isframe return isinstance(object, types.FrameType) File "lib/python3.13/site-packages/django/utils/functional.py", line 280, in __getattribute__ value = super().__getattribute__(name) File "lib/python3.13/site-packages/django/utils/functional.py", line 251, in inner self._setup() ~~~~~~~~~~~^^ File "lib/python3.13/site-packages/django/contrib/admin/sites.py", line 605, in _setup AdminSiteClass = import_string(apps.get_app_config("admin").default_site) ~~~~~~~~~~~~~~~~~~~^^^^^^^^^ File "lib/python3.13/site-packages/django/apps/registry.py", line 165, in get_app_config raise LookupError(message) LookupError: No installed app with label 'admin'. This seems to happen as a DefaultAdminSite is always created, lazily, in a global variable, which muppy accesses to get the size. Any idea how to work around this? -
Django Email Configuration: SSL Certificate Verification Failed with GoDaddy SMTP Server
I'm trying to configure Django to send emails using GoDaddy's SMTP server (smtpout.secureserver.net). My email account was created on GoDaddy, and I have the following settings in my settings.py file: import os MAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtpout.secureserver.net' EMAIL_HOST_USER = os.environ.get("EMAIL_HOST") EMAIL_HOST_PASSWORD = os.environ.get("EMAIL_HOST_PASSWORD") DEFAULT_FROM_EMAIL = os.environ.get("EMAIL_HOST") EMAIL_PORT = 465 EMAIL_USE_SSL = True EMAIL_USE_TLS = False I've set my environment variables as follows: EMAIL_HOST = ABC@dagger.com # GoDaddy email EMAIL_HOST_PASSWORD = Abc@1223 # GoDaddy email password However, when trying to send an email, I get the following error: File "C:\Users\jinal.desai\AppData\Local\Programs\Python\Python310\lib\ssl.py", line 1071, in _create self.do_handshake() File "C:\Users\jinal.desai\AppData\Local\Programs\Python\Python310\lib\ssl.py", line 1342, in do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1007) What I've Tried: Verified that my GoDaddy email credentials are correct. Tried setting EMAIL_USE_TLS = True and EMAIL_USE_SSL = False. Used EMAIL_PORT = 587 instead of 465. Manually verified that smtpout.secureserver.net works using an external email client. Attempted to disable SSL certificate verification using: import ssl ssl._create_default_https_context = ssl._create_unverified_context Question: How can I fix this SSL certificate verification error with GoDaddy's SMTP? Do I need to install or trust a specific SSL certificate for GoDaddy's mail server? Is there any known workaround to resolve this … -
Django admin: strange view
Couldnt understand what wrong with my admin part. It looks like that: I understood that this effect may depend on 'static' resources.. HTML preview shows: <head> <title>Log in | Django site admin</title> <link rel="stylesheet" href="/staticfiles/admin/css/base.css"> <link rel="stylesheet" href="/staticfiles/admin/css/dark_mode.css"> <script src="/staticfiles/admin/js/theme.js"></script> <link rel="stylesheet" href="/staticfiles/admin/css/nav_sidebar.css"> <script src="/staticfiles/admin/js/nav_sidebar.js" defer></script> <link rel="stylesheet" href="/staticfiles/admin/css/login.css"> and I checked - all files exist inbb staticfiles directory. But when i click file in chrome - such page appears Page not found (404) Request Method: GET Request URL: http://amodule.su/staticfiles/admin/css/nav_sidebar.css Using the URLconf defined in amodule.urls, Django tried these URL patterns, in this order: [name='home'] news/ admin/ The current path, staticfiles/admin/css/nav_sidebar.css, didn’t match any of these. my settings.py contains such definitions of static: STATIC_URL = 'staticfiles/' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = '/media/' STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles') where am I wrong? -
Handling multiple related objects in the admin without using inlines
I am customising Django's admin for a particular view on some data. Where I have got so far I have a Project model, and a ProjectObjectConditions model that has a ForeignKey to it (the actual models (on Github)): class Project(models.Model): [...] class ProjectObjectiveCondition(models.Model): project = models.ForeignKey(Project, on_delete=models.CASCADE) With a custom inline admin template (on Github), the inlines look like this: What you are seeing there is: Objective: Agreeableness Level: Started Condition: Speaks pleasantly Condition: Doesn't shout Level: First results Condition: Accepts thanks with gracce Level: Mature results Condition: Apologises with sincerity Objective: Colourfulness Level: Started Condition: Has blue ... and so on The Conditions are grouped by Objective and Level through repeated use of {% regroup %} in the template. Date/commitment columns You can also see columns for the dates (instances of the WorkCycle class) and their True/False values, that show whether a commitment was made for this Project, and to reach which Level, in which WorkCycle (i.e. in which year). I want to replace those with editable tick-boxes. I actually have another inline, LevelCommitmentInline, which allows me to edit those True/False values for that model - but I don't want them in a long list somewhere else, I want … -
React Blog Page Not Loading & Comments Section Not Working
I am working on a React blog page where users can view blog posts and leave comments (similar to YouTube's comment section). However, after clicking on the blog page and clicking on a blog I wish to view the content no longer loads properly and is just stuck saying loading so the contents are no longer visible on the specified page and the comment section isn't visible either. What I Tried & Expected Outcome: Fetching Blog Posts: Used axios.get('http://127.0.0.1:8000/api/blogs/') inside useEffect(). I had Expected posts to load, but they do not appear. Deleting Blog Posts: Used axios.delete(\http://127.0.0.1:8000/api/blogs/delete/$%7BblogId%7D/%5C%5C%5C%60, { headers: { Authorization: `Token ${user.token}` } })`. Expected blog deletion to work, but encountered errors. Commenting System: Implemented a comment section using axios.post() to submit new comments but nothing is being displayed at all its just stuck saying loading. Expected comments to display but they do not appear. Here's The backend snippet of the code im trying to run @api_view(['GET', 'POST']) @authentication_classes([TokenAuthentication]) @permission_classes([IsAuthenticated]) def blog_comments(request, blog_id): """ GET /blogs/<blog_id>/comments/ Returns: All comments for specified blog POST /blogs/<blog_id>/comments/ Required data: content, parent (optional for replies) Returns: Created comment data Requires: Authentication Token """ blog = get_object_or_404(Blog, id=blog_id) if request.method == 'GET': comments = … -
Embed a Django context variable into an existing string
In my Django project I have this template snippet <button type="button" onClick="window.location.href='product-without-subscription/{{ context_variable_from_view }}'" > My Button </button> Here the context_variable_from_view comes from my context prior html rendering. In the rendered page I can't get the context_variable_from_view embed inside the link string in the button. -
Import Error: module does not define a "CustomJWTAuthentication" attribute/class
I'm building a REST Auth API with Django/DRF. All of a sudden when I start working today, I'm getting this error message in my cli: ImportError: Could not import 'users.authentication.CustomJWTAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: Module "users.authentication" does not define a "CustomJWTAuthentication" attribute/class. This is my REST_FRAMEWORK config in settings.py REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'users.authentication.CustomJWTAuthentication', ], 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ], ... } This is my /users/authentication.py, which has the CustomJWTAuthentication class: from django.conf import settings from rest_framework_simplejwt.authentication import JWTAuthentication class CustomJWTAuthentication(JWTAuthentication): def authenticate(self, request): try: header = self.get_header(request) if header is None: raw_token = request.COOKIES.get(settings.AUTH_COOKIE) else: raw_token = self.get_raw_token(header) if raw_token is None: return None validated_token = self.get_validated_token(raw_token) return self.get_user(validated_token), validated_token except: return None I'm running Python v3.12, Django v4.2, DRF v3.14 and DRF SimpleJWT v5.4 on Ubuntu 24 in a venv. I have no idea why this is happening all of a sudden? -
Unit testing Amazon SES in Django: emails not being sent
Creating unit tests for Amazon Simple Email Service (SES) for a Django application using package django-ses test_mail.py from django.core import mail ... def test_send_direct_email(send_ct): from_email = settings.SERVER_EMAIL to_email = [nt[2] for nt in settings.NOTIFICATIONS_TESTERS] starttime = datetime.now() connection = mail.get_connection() pre_data = get_ses_emails_data() _mail_signal_assertion_handler.call_count = 0 signals.message_sent.connect(_mail_signal_assertion_handler) emails = [] for i in range(send_ct): emails.append( mail.EmailMessage( SUBJECT_EMAIL, BODY_EMAIL.format(send_ct=i, server=settings.EMAIL_BACKEND), from_email, to_email, # connection=connection, ) ) connection.send_messages(emails) post_data = get_ses_emails_data() assert int(post_data["24hour_sent"]) == int(pre_data["24hour_sent"]) + send_ct assert check_aws_ses_sent(assertions={"Sent": send_ct, "StartTime": starttime}) assert _mail_signal_assertion_handler.call_count == send_ct settings.py AWS_DEFAULT_REGION = "ca-central-1" try: # IAM programmatic user AWS_ACCESS_KEY_ID = env("AWS_ACCESS_KEY_ID") AWS_SECRET_ACCESS_KEY = env("AWS_SECRET_ACCESS_KEY") except KeyError: raise ImproperlyConfigured("Missing AWS_ACCESS_KEY_ID or AWS_SECRET_ACCESS_KEY") # =========== EMAIL ============== EMAIL_BACKEND = "django_ses.SESBackend" DEFAULT_FROM_EMAIL = env("DEFAULT_FROM_EMAIL") # verified aws ses identity SERVER_EMAIL = DEFAULT_FROM_EMAIL but the emails are never sent (AssertionFrror: False (0 == 1). The service is working as expected when running live on the server. The assertions I am using are a connection to the message_sent signal (new in 4.4.0) from django_ses import signals def _mail_signal_assertion_handler(sender, message, **kwargs): _mail_signal_assertion_handler.call_count += 1 assert message.subject == SUBJECT_EMAIL assert message.body == BODY_EMAIL.format( send_ct=_mail_signal_assertion_handler.call_count, server=settings.EMAIL_BACKEND ) signals.message_sent.connect(_mail_signal_assertion_handler) and checking the SES data through a boto3 client session: from django_ses.views import emails_parse, stats_to_list, … -
Gmail Oauth2 - restrict the scope to only emails from a certain domain
I have a Django site that uses Google Oauth2 to allow users to grant access to read and reply to their emails. GOOGLE_OAUTH2_CREDENTIALS = { 'client_id': '********************', 'client_secret': '*******', 'scope': [ 'https://www.googleapis.com/auth/gmail.readonly', 'https://www.googleapis.com/auth/gmail.send' ], 'redirect_uri': 'https://www.********.com/*****/', } However, for privacy and security purposes I want to set restrict the scope to only being able to read and reply to emails from a specific domain. Is it possible to modify the scope to only allow the permissions within for emails to/from a certain domain? -
How to filter data obtained through annotation?
There are 'images' that are attached to 'objects' through a ForeignKey, they can be several at each 'object'. There are 'subjects' that are also attached to 'objects' through ForeignKey. How to attach 'subject' one image from the 'object', noticed "select=1"? Through annotation, I can get either the number of images or all images. Options that work but that's not what you need Subject.objects.filter(object_id__hromada_id=hromada.id, state=3).annotate(image=Count('object__objectimages__image', filter=Q(object__objectimages__select=1))) or Subject.objects.filter(object_id__hromada_id=hromada.id, state=3).annotate(image=F('object__objectimages__image')) -
CSV Timed RotatingFileHandler not rotating files
We need to fulfil a request for our Python (v3.11.7) Django (v3.2.23) app to log specific security related events on a csv file that will be rotated on an hourly basis and have a filename like audit_logs20250130_0800-0900.csv. Our Django back-end is running on a docker container with an entrypoint like gunicorn wsgi:application --bind 0.0.0.0:8000 --workers 4 --threads 4 We are trying to implement this by inheriting from logging.handlers.TimedRotatingFileHandler to implement a CSVTimedRotatingFileHandler that looks like this: import logging import os from datetime import datetime, timedelta from logging.handlers import TimedRotatingFileHandler import pytz import redis from django.conf import settings REDIS_KEY = 'CSVTimedRotatingFileHandler_RolloverAt' class CSVTimedRotatingFileHandler(TimedRotatingFileHandler): def __init__(self, filename, when, interval, backup_count, encoding=None, delay=False, headers=None): super().__init__(filename, when=when, interval=interval, backupCount=backup_count, encoding=encoding, delay=delay, utc=False, atTime=None, errors=None) self.headers = headers def emit(self, record): try: last_rollover_at = self.get_redis_rollover_at_value() # Check if a rollover happened and refresh the stream if needed (for multiple workers) if self.rolloverAt != last_rollover_at: self.rolloverAt = last_rollover_at if self.stream and not self.stream.closed: self.stream.close() self.stream = self._open() if self.shouldRollover(record): self.doRollover() # If the stream is still closed or None, open it again if self.stream is None or self.stream.closed: self.stream = self._open() # Write headers if the file is empty if self.stream.tell() == 0 and self.headers: self.stream.write(','.join(self.headers) … -
How to recreate the database for every Django test case?
I want to write test cases for django that use the database and change its entries. I want to create a new database for every test. How do I force django to delete the entire database after every testcase (either for every function or for every class)? I hope it doesn't matter, but I use SQLite. -
Django not loading image files with static
I have been working with Django and it isn't loading any image files but it is loading my CSS files in the same directory area. HTML page <!DOCTYPE html> <html lang="en"> {% load static %} <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link href="{% static 'home.css' %}" type="text/css" rel="stylesheet"> <title>Hello World</title> </head> <body>`` <h1>Home</h1> <img href="{% static 'icons/folder.png' %}" alt="folder"> {% for file in files %} {% if file.1 == True %} <p><a href="/files/home/{{file.2}}">{{file}}></a></p> {% else %} <p>{{file}}</p> {% endif %} {% endfor %} </body> </html> settings.py BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') This is the dictory. The CSS file loads but the image doesn't Let me know if you need any more information that I forgot to provide. -
Django and AWS Lambda runtime configuration change
I have a business application written in Django where each tenant should have a completely separate environment, including: Separate database schema Separate Redis instance Separate S3 bucket, etc. However, I want to deploy a single instance of the application on AWS Fargate or AWS Lambda to reduce management costs. Each tenant will have a different domain, and the Django configuration should dynamically change based on the tenant. My idea is to store all tenant-specific configurations (credentials, environment variables, etc.) in AWS AppConfig. For example: A single AWS RDS database with separate schemas for each tenant A shared AWS ElastiCache (Redis) instance but logically separated A single Django Celery setup Dynamic configuration loading based on the tenant Since each tenant has different database credentials, email credentials, payment gateway credentials (Stripe, PayPal, etc.), I want to ensure this approach is scalable and maintainable. My questions: Is this a good approach for multi-tenancy in Django? Are there better alternatives to managing per-tenant configurations dynamically? How should I handle tenant-based database connections efficiently in Django? Any recommendations or best practices would be greatly appreciated. -
Django REST Framework: Custom Action (POST) without Serializer
I am using Django REST Framework (DRF) and have a ModelViewSet with a custom action (@action) for canceling an order. The cancel action does not require a serializer since it only modifies the database and returns a response. However, when I set serializer_class = None, it does not work as expected. Here’s my ViewSet: class OrderViewSet(ModelViewSet): http_method_names = ['get', 'post', 'patch', 'delete', 'head', 'options'] @action(detail=True, methods=['post'], permission_classes=[IsAuthenticated], serializer_class=None #Not Working) def cancel(self, request, pk=None): order = self.get_object() OrderService.cancel_order(order, request.user) return Response({'status': 'Order cancelled'}, status=status.HTTP_200_OK) def get_serializer_class(self): if self.action == 'cancel': return None # Causes an error if self.action == 'cancel': return EmptySerializer # This way works if self.request.method == 'POST': return CreateOrderSerializer elif self.request.method == 'PATCH': return UpdateOrderSerializer return OrderSerializer Issues Setting serializer_class = None inside @action does not work. Returning None in get_serializer_class causes 'NoneType' object is not callable' error Now, I created an empty serializer to bypass DRF’s requirement but that's looks overwork for me to acheive this. Is there any better way to do that. -
How to send images as a binary data with the request
Here's what I have models.py class Post(models.Model): id = models.AutoField(primary_key=True) text = models.TextField(max_length=165) author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return f'{self.author} posts "{self.text}"' class Images(models.Model): id = models.AutoField(primary_key=True) image = models.ImageField(upload_to='images/') post_id = models.ForeignKey(Post, on_delete=models.CASCADE) def __str__(self): return f'{self.post_id.id} - "{self.image}"' serializers.py class ImageSerializer(serializers.ModelSerializer): class Meta: model = Images fields = ('image',) class PostSerializer(serializers.ModelSerializer): images = ImageSerializer(many=True, read_only=True, source='images_set') author = UserSerializer(read_only=True) comments = CommentSerializer(many=True, read_only=True, source='comment_set') likes_count = serializers.SerializerMethodField() class Meta: model = Post fields = ['id', 'author', 'text', 'images', 'created_at', "likes_count", 'comments'] def create(self, validated_data): validated_data["author"] = self.context["request"].user return super().create(validated_data) def validate(self, data): if data.get('author') == self.context["request"].user: raise serializers.ValidationError('Logged in User is not an Author') return data def get_likes_count(self, obj): return obj.postlikes_set.count() views.py class NewPost(APIView): permission_classes = [IsAuthenticated] parser_classes = [JSONParser] def post(self, request): text = request.data.get("text") post_id = Post.objects.create(author_id=request.user.id ,text=text) images = request.FILES.getlist('images') for image in images: Images.objects.create(image=image, post_id=post_id) return Response({"message": "Успешно", 'received data': request.data}, status=status.HTTP_201_CREATED) I need to send post data consisting of text and multiple images. I've been told the way to do it is to send images "as binary data" and was linked docs pages for JSON Parsers. I have no idea what that actually means. If I try to send …