Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
DatabaseError: DatabaseWrapper objects created in a thread can only be used in that same thread
I'm having the following issue, when I try to execute my Django tests: /Users/myUser/Desktop/myProject-py/src/project/project/billing_v2/tests/test_accounting_integration_heading.py::AccountingIntegrationHeadingAPITests::test_create_accounting_integration_heading failed with error: Test failed with exception request = <SubRequest '_django_setup_unittest' for <TestCaseFunction test_makemigrations_command>> django_db_blocker = <pytest_django.plugin._DatabaseBlocker object at 0x10602ae80> @pytest.fixture(autouse=True, scope="class") def _django_setup_unittest( request, django_db_blocker: "_DatabaseBlocker", ) -> Generator[None, None, None]: """Setup a django unittest, internal to pytest-django.""" if not django_settings_is_configured() or not is_django_unittest(request): yield return # Fix/patch pytest. # Before pytest 5.4: https://github.com/pytest-dev/pytest/issues/5991 # After pytest 5.4: https://github.com/pytest-dev/pytest-django/issues/824 from _pytest.unittest import TestCaseFunction original_runtest = TestCaseFunction.runtest def non_debugging_runtest(self) -> None: self._testcase(result=self) try: TestCaseFunction.runtest = non_debugging_runtest # type: ignore[assignment] > request.getfixturevalue("django_db_setup") .venv/lib/python3.8/site-packages/pytest_django/plugin.py:490: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ .venv/lib/python3.8/site-packages/pytest_django/fixtures.py:122: in django_db_setup db_cfg = setup_databases( .venv/lib/python3.8/site-packages/django/test/utils.py:179: in setup_databases connection.creation.create_test_db( .venv/lib/python3.8/site-packages/django/db/backends/base/creation.py:59: in create_test_db self.connection.close() .venv/lib/python3.8/site-packages/django/utils/asyncio.py:33: in inner return func(*args, **kwargs) .venv/lib/python3.8/site-packages/django/db/backends/base/base.py:285: in close self.validate_thread_sharing() _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ … -
How to execute a multi-statement Snowflake SQL script (DECLARE, DDL, DML, CASE) from Python with parameters and fetch SELECT results?
I’m new to Python and Snowflake’s scripting blocks. I want to keep a multi-statement Snowflake SQL script in a .sql file and execute it from Python with parameters. The script may include DECLARE, DDL, DML, CASE logic — basically SP-like behavior — and I want to capture any SELECT result sets if present. Example script (simplified): BEGIN -- Declare a variable using Snowflake scripting DECLARE v_admin STRING DEFAULT :admin_user; -- Create a temporary table CREATE TEMP TABLE temp_data ( tenant STRING, client STRING, user_id STRING, use_mm STRING, access_level STRING ); -- Two inserts INSERT INTO temp_data (tenant, client, user_id, use_mm, access_level) VALUES ('101', '202', 'admin_user', 'true', NULL), ('102', '203', 'guest_user', 'false', NULL); -- CASE update using the declared variable UPDATE temp_data SET access_level = CASE WHEN use_mm = 'true' AND user_id = v_admin THEN 'full' WHEN use_mm = 'true' THEN 'limited' ELSE 'none' END; -- Return results SELECT * FROM temp_data; END; What I need: Execute the file from Python, bind parameters (e.g., admin_user), and support multiple statements. If the script contains one or more SELECTs, fetch results (ideally the last SELECT); otherwise just execute. Keep temp tables ephemeral (session-scoped). Questions: Can I achieve stored-procedure-like behavior by keeping the SQL … -
InlineKeyboardButton with callback_data doesn't work
InlineKeyboardButton with callback_data doesn't work. When I click on it, nothing happens. Here is how I create the button: from django.apps import apps from asgiref.sync import sync_to_async from telegram import Update, InlineKeyboardMarkup, InlineKeyboardButton, WebAppInfo from telegram.ext import CommandHandler, ApplicationBuilder, MessageHandler, filters, CallbackQueryHandler async def start(self, update: Update, context): keyboard = InlineKeyboardMarkup([ [InlineKeyboardButton("Already registred", callback_data="already_registered")], [InlineKeyboardButton("Register", web_app=WebAppInfo(url=WEB_APP_URL))] ]) await update.message.reply_text( "Welcome", reply_markup=keyboard ) return This is the callback query handler: async def button(self, update: Update, context): query = update.callback_query if not query: return await query.answer() if query.data == "already_registered": await context.bot.send_message( chat_id=update.message.chat_id, text='Good' ) return and this is how I run: def run(self): TOKEN = apps.get_model('app.Config').objects.get_mailing_tg_bot_token() app = ApplicationBuilder().token(TOKEN).build() app.add_handler(CommandHandler('start', self.start)) app.add_handler(CallbackQueryHandler(self.button)) -
Snyk flags code as path traversal vulnerability but the code seems ok
In my django python application I have such functions: def get_sanitized_file_path(file_path: str) -> Path: ALLOWED_BASE_DIR = Path(settings.MEDIA_ROOT).resolve() if not file_path: raise SuspiciousOperation("No file path provided") try: file_path = os.path.normpath(file_path) if ".." in file_path: raise SuspiciousOperation("Path traversal attempt detected") # Security: Prevent path traversal - this will raise ValueError if outside MEDIA_ROOT request_path = Path(file_path).resolve() request_path.relative_to(ALLOWED_BASE_DIR) if not request_path.exists(): raise FileNotFoundError("File not found") if not request_path.is_file(): raise SuspiciousOperation("Path is not a regular file") return request_path except (ValueError, OSError, PermissionError) as e: raise SuspiciousOperation(f"File access error: {e}") def load_file(file_path): file_path = get_sanitized_file_path(file_path) if not file_path: raise exceptions.FileNotFoundException if not os.path.exists(file_path): raise exceptions.FileNotFoundException try: with open(file_path, "rb") as file: file_data = io.BytesIO(file.read()) except Exception as e: raise exceptions.FileReadError from e return file_data def render_file(file_path, filename=None, content_type="application/pdf"): file_data = load_file(file_path) filename = filename or file_util.get_filename(file_path) return render_response(file_data, filename, content_type) def render_response(file_data, filename, content_type="application/pdf"): response = FileResponse(file_data, content_type=content_type, as_attachment=True, filename=filename) set_response_props(response, filename) return response and somewhere in my code I calling the render_file function: file_path = get_file_path() # returns a posix path file_path = get_sanitized_file_path(file_path) render_file(file_path) # gets flagged by snyk Even though I'm sanitizing my file path both before calling the method and inside the method called, Snyk code still flags the line render_file(file_path) … -
How to handle customer.subscription.created if a organization(tenant) doesn’t exist yet in Stripe webhook?
I'm using Django and Stripe for a multi-tenant SaaS. I register users and organizations manually from a view, and I create the customer and subscription using Stripe API before saving to the database. class TestRegisterView(APIView): permission_classes = () def post(self, request, *args, **kwargs): user_data = request.data.get('user', None) organization_data = request.data.get('organization', None) payment_data = request.data.get('payment', None) if None in [user_data, organization_data, payment_data]: return Response(data={'message': 'Missing data'}, status=400) price = PriceModel.objects.filter(stripe_price_id=payment_data['price_id']) if not price.exists(): return Response(data={'msg': 'Price not found'}, status=400) user = UserModel.objects.filter( Q(email=user_data['email']) | Q(username=user_data['username'])) if user.exists(): return Response(data={'msg': 'Customer with that email or username already exists'}, status=400) organization = OrganizationModel.objects.filter( Q(name=organization_data['name']) | Q(company_email=organization_data['company_email']) | Q(phone_number=organization_data['phone_number'])) if organization.exists(): return Response(data={'message': 'Organization already exists'}, status=400) user_serializer = POSTUserSerializer(data=user_data) organization_serializer = POSTOrganizationSerializer(data=organization_data) if user_serializer.is_valid() and organization_serializer.is_valid(): stripe_connection = StripeSingleton() try: stripe_customer = stripe_connection.Customer.create( email=payment_data['email'], name=f"{user_data['first_name']} {user_data['last_name']}", ) except Exception: return Response(data={'msg': 'Error creating Stripe customer'}, status=400) try: subscription = stripe_connection.Subscription.create( customer=stripe_customer.id, items=[{'price': payment_data['price_id']}], payment_behavior='default_incomplete', expand=['latest_invoice.confirmation_secret'], ) except Exception: return Response(data={'msg': 'Error creating Stripe subscription'}, status=400) try: with transaction.atomic(): user = user_serializer.save() organization = organization_serializer.save( owner_id=user.id, stripe_customer_id=stripe_customer.id ) user.organization = organization user.save() with schema_context(organization.schema_name): UserLevelPermissionModel.objects.create( user=user, level=UserLevelPermissionModel.UserLevelEnum.ADMIN, ) except Exception: stripe_connection.Subscription.delete(subscription.id) stripe_connection.Customer.delete(stripe_customer.id) return Response(data={'msg': 'Error creating user or organization'}, status=400) return Response(data={ 'subscription_id': subscription.id, … -
testing a complex multipart custom django form
I have 2 complex custom form classes; each class contain several subforms (model form, formset and sometimes nested formset). I have written tests for both of them : tests of the form methods (init, full_clean, is_valid) using post data. I am looking for a way to test the creation of the form with the renderer. In the view tests, using request factory, the form is created but the forms within the formset are not created. When I do manual testing of the form with the test server, I encounter some errors that are notcovered by my tests -
Items Not Getting Added To Anonymous Users Cart?
i wanna make non logged in users can added items to thier cart but when i click add to cart no item getting added to thier cart this is my views.py : from django.shortcuts import render from django.http import JsonResponse import json import datetime from .models import * def store(request): if request.user.is_authenticated: customer = request.user.customer order, created = Order.objects.get_or_create(customer=customer, complete=False) items = order.orderitem_set.all() cartItems = order.get_cart_items else: #Create empty cart for now for non-logged in user items = [] order = {'get_cart_total':0, 'get_cart_items':0, 'shipping':False} cartItems = order['get_cart_items'] products = Product.objects.all() context = {'products':products, 'cartItems':cartItems} return render(request, 'store/store.html', context) def cart(request): if request.user.is_authenticated: customer = request.user.customer order, created = Order.objects.get_or_create(customer=customer, complete=False) items = order.orderitem_set.all() cartItems = order.get_cart_items else: #Create empty cart for now for non-logged in user items = [] order = {'get_cart_total':0, 'get_cart_items':0, 'shipping':False} cartItems = order['get_cart_items'] context = {'items':items, 'order':order, 'cartItems':cartItems} return render(request, 'store/cart.html', context) def checkout(request): if request.user.is_authenticated: customer = request.user.customer order, created = Order.objects.get_or_create(customer=customer, complete=False) items = order.orderitem_set.all() cartItems = order.get_cart_items else: #Create empty cart for now for non-logged in user items = [] order = {'get_cart_total':0, 'get_cart_items':0, 'shipping':False} cartItems = order['get_cart_items'] context = {'items':items, 'order':order, 'cartItems':cartItems} return render(request, 'store/checkout.html', context) def updateItem(request): data = json.loads(request.body) productId … -
Implementation of MultiPolygonZMField in GeoDjango/django
I have an .shp file and the ogrinfo resulted as follow # ogrinfo -so AnalysisV1.shp AnalysisV1 INFO: Open of `AnalysisV1.shp' using driver `ESRI Shapefile' successful. Layer name: AnalysisV1 Metadata: DBF_DATE_LAST_UPDATE=2025-06-23 Geometry: 3D Measured Polygon Feature Count: 223252 Extent: (105.072679, -8.808389) - (116.270615, -4.224575) Layer SRS WKT: GEOGCRS["WGS 84", DATUM["World Geodetic System 1984", ELLIPSOID["WGS 84",6378137,298.257223563, LENGTHUNIT["metre",1]]], PRIMEM["Greenwich",0, ANGLEUNIT["degree",0.0174532925199433]], CS[ellipsoidal,2], AXIS["latitude",north, ORDER[1], ANGLEUNIT["degree",0.0174532925199433]], AXIS["longitude",east, ORDER[2], ANGLEUNIT["degree",0.0174532925199433]], ID["EPSG",4326]] Data axis to CRS axis mapping: 2,1 OBJECTID_1: Integer64 (10.0) FID_jawa_p: Integer64 (10.0) objectid: Integer64 (10.0) kriteria: String (50.0) kodeprov: Real (19.11) I've tried to generate the model using ogrinspect ./manage.py ogrinspect AnalysisV1.shp Analysis --srid=4326 --mapping --multi and model generated as follow from django.contrib.gis.db import models class Analysis(models.Model): objectid_1 = models.BigIntegerField() fid_jawa_p = models.BigIntegerField() objectid = models.BigIntegerField() kriteria = models.CharField(max_length=50) kodeprov = models.FloatField() geom = models.MultiPolygonZMField(srid=4326) When I check the django.contrib.gis.db.models, there is no MultiPolygonZMField implementation. How the ogrinspect use that Field whilst MultiPolygonZMField not defined? Is there any MultiPolygonZMField implementation on GeoDjango? or model field compatible ? -
Why does my Django models.Manager return all objects on a relationship?
I don't particularly understand what's going on here, but it seems that super().get_queryset() doesn't do what I think it does? I have 1:N relationship, and the default FK reverse lookup works: >>> for thing in this.thing_set.all(): ... print(thing.this) Each one of these is This. However, with my customized: >>> for thing in this.thing_set.by_date(): ... print(thing.this) Will produced This and `That* class ThingByDateManager(models.Manager): def by_date(self): return super().get_queryset().order_by("start_time") That's all there is. class This(models.Model): name = models.CharField(max_length=255, primary_key=True) class Thing(models.Model): start_time = models.DateTimeFiled() name = models.CharField(max_length=255) this = models.ForeignKey(This, on_delete=models.CASCADE) objects = ThingByDateManager() (might not have those models perfectly written, but I'm hoping it's just something silly with the queryset or something) Why doesn't this correctly filter my objects by this, instead returning all of the Things? -
How do i make the names appear more to the left and reduce the spacing between the checkbox and the name?
I’m rendering a Django form field (CheckboxSelectMultiple) inside a custom dropdown. The checkboxes and labels (names) are visually shifted to the right. I want the dropdown to look like a clean checklist, with all checkbox icons aligned in the same column and the text starting immediately to the right of the checkboxes, without extra indentation.checkbox and names far to the right {{ form.non_field_errors }} {% for field in form %} <div style="margin-bottom: 1rem;"> {{ field.label_tag }}<br> {% if field.name == 'team_members' %} <div class="dropdown"> <button type="button" onclick="toggleDropdown(this)">Select Team Members</button> <div class="dropdown-content" style="display:none;"> {% for checkbox in field %} <label style="display: flex; align-items: center; gap: 6px; margin-bottom: 6px;"> {{ checkbox.tag }} <span style="font-size: 1rem;">{{ checkbox.choice_label }}</span> </label> {% endfor %} </div> </div> {% else %} {{ field }}<br> {% endif %} {{ field.errors }} </div> {% endfor %} <style> .dropdown { position: relative; display: inline-block; } .dropdown-content { position: relative; background: #fff; border: 1px solid #ccc; padding: 10px; z-index: 100; min-width: 220px; max-height: 220px; overflow-y: auto; box-shadow: 0 2px 8px rgba(0,0,0,0.08); display: flex; flex-direction: column; } .dropdown-content label { display: flex; align-items: center; margin-bottom: 6px; cursor: pointer; justify-content: flex-start; gap: 2px; /* smaller gap */ } .dropdown-content input[type="checkbox"] { margin-right: -5px; … -
Stripe Subscription: latest_invoice.payment_intent raises AttributeError: payment_intent
I'm trying to create a subscription in Stripe using Python and the official library, with the goal of obtaining the client_secret from the initial invoice's PaymentIntent to complete payment on the frontend. Here is the code I'm using: import stripe stripe.api_key = 'sk_test_...' price_id = 'price_...' # Example subscription = stripe.Subscription.create( customer=customer.id, items=[{'price': price_id}], payment_behavior='default_incomplete', expand=['latest_invoice.payment_intent'], ) I want to access: subscription.latest_invoice.payment_intent.client_secret But I get the error: AttributeError: payment_intent What I've checked so far The subscription is created successfully. The parameter expand=['latest_invoice.payment_intent'] is included to embed the payment_intent object. I've verified that the invoice (latest_invoice) exists. However, the payment_intent field is missing from the latest_invoice object. Questions Why is payment_intent missing from latest_invoice when creating the subscription with payment_behavior='default_incomplete' and expanding the field? How should I obtain the client_secret to confirm payment on the frontend using Stripe.js in these cases? -
Error d"MIME (« text/html ») incorrect (X-Content-Type-Options: nosniff)" on deploy Django project with gunicorn and Apache
I'm trying to deploy a Django project with Gunicorn and Apache. The gunicorn is configured and working --> no problem on this side The problem is with the statics files, i configure an apache conf : <VirtualHost *:80> ProxyPass /static/ ! ProxyPass / http://0.0.0.0:8002/ ProxyPassReverse / http://0.0.0.0:8002/ Alias /static/ /opt/livraison/apache/DEV <Directory /opt/livraison/apache/DEV> Require all granted </Directory> # Possible values for LogLevel : debug, info, notice, warn, error, crit, alert, emerg. LogLevel info ErrorLog /logs/PASPE_DEV/apache_error.log CustomLog "/logs/PASPE_DEV/access_log/apache.log" "%h %l %u %t \"%r\" %>s %b" </VirtualHost> And it seem that my static files are redirect to gunicorn so on port 8002 and not 80. and i got this error : adresse « http://server:8002/static/SuiviInstall/css/home.css » a été bloquée en raison d’un type MIME (« text/html ») incorrect (X-Content-Type-Options: nosniff) How can i handle this error ? -
How to re-compile static/css/site-tailwind.js file in Django project
I'm developping a Django project inside a docker container, but am running into a problem. I cannot get the docker container to recompile the static/css/site-tailwind.css file. I'm trying to include components which are declared in a assets/styles/site-tailwind.css file, but however I build the image, it does not compile the static file anew... Anyone has an idea on how to do this ? -
Unable to create POST request via HTMX for WebSocket
When trying to send a form in real-time chat, a GET request (HTTP GET /?csrfmiddlewaretoken=some_csrf) appears in the console instead of POST, and the program does not reach the consumer. Django-v5.2.4, daphne-v4.2.1 chat.html {% extends 'layouts/blank.html' %} {% block content %} <wrapper class="block max-w-2xl mx-auto my-10 px-6"> {% if chat_group.groupchat_name %} <div class="flex justify-between"> <h2>{{ chat_group.groupchat_name }}</h2> {% if user == chat_group.admin %} <a href="{% url 'edit-chatroom' chat_group.group_name %}"> <div class="p-2 bg-gray-200 hover:bg-blue-600 rounded-lg group"> <svg class="fill-gray-500 group-hover:fill-white" width="16" height="16" <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </div> </a> {% endif %} </div> {% endif %} <div id="chat_window" class="h-[45rem] flex flex-col bg-gray-800 rounded-2xl shadow-2xl relative p-1"> <div class="flex justify-center text-emerald-400 bg-gray-800 p-2 sticky top-0 z-10"> {% if other_user %} <div id="online-icon" class="gray-dot absolute top-2 left-2"></div> <a href="{% url 'profile' other_user.username %}"> <div class="flex items-center gap-2 p-4 sticky top-0 z-10"> <img class="w-10 h-10 rounded-full object-cover" src="{{ other_user.profile.avatar }}" /> <div> <span class="font-bold text-white">{{ other_user.profile.name }}</span> <span class="text-sm font-light text-gray-400">@{{ other_user.username }}</span> </div> </div> </a> … -
Issue with Django product quantity
I want to make sure that the selected quantity by the buyers is passed to the cart and the placed order, how will I do that -
React and Django DRF
The backend works, when i test it with an http file. and directly at the endpoint. POST http://localhost:8000/api/products/ HTTP/1.1 Content-Type: application/json Authorization: Bearer my_access_token { "name": "test", "price": 23, "stock": 3, "description": "test description", "in_sale": true, "sale_price": 21, "color": [ { "name":"black", "color_code": "#000000" } ] } However when i fill the forms created in react jsx and send it to the API, i get Key Error when i leave the Color Nested Serializer active, when i remove it, i get Bad Request. Here is my serializer.py class ProductCreateSerializer(serializers.ModelSerializer): class ColorCreateSerializer(serializers.ModelSerializer): class Meta: model = Color fields = ('name', 'color_code') # color = ColorCreateSerializer(many=True, required=False) def update(self, instance, validated_data): # color_data = validated_data.pop("color") with transaction.atomic(): instance = super().update(instance, validated_data) if color_data is not None: instance.color.all().delete() for item in color_data: Color.objects.create(product=instance, **item) return instance def create(self, validated_data): color_data = validated_data.pop('color') with transaction.atomic(): product = Product.objects.create(**validated_data) for item in color_data: Color.objects.create(product=product, **item) return product class Meta: model = Product fields = ( 'id', 'name', 'description', 'price', 'stock', 'in_sale', 'sale_price', 'image', 'color' ) extra_kwargs = { 'id': {'read_only': True} } Here is my views.py class ProductView(viewsets.ModelViewSet): queryset = Product.objects.all() serializer_class = ProductSerializer permission_classes = [AllowAny] def list(self, request, *args, **kwargs): return super().list(request, *args, … -
Django Heroku django-tenant attributeerror: 'databasewrapper' object has no attribute 'schema_name'
I'm migrating my development to django-tenants, I didn´t had any issues doing it on my local, but when I push my changes to the prod environment in Heroku, I'm getting the following error: attributeerror: 'databasewrapper' object has no attribute 'schema_name' Procfile web: gunicorn tlgrmbot.wsgi Database settings: DATABASES = { 'default': { 'ENGINE': 'django_tenants.postgresql_backend', 'NAME': os.environ.get('DB_NAME_BOT'), 'USER': os.environ.get('DB_USER_BOT'), 'PASSWORD': os.environ.get('DB_PWD_BOT'), 'HOST': 'localhost', 'PORT': '5432', } } DATABASE_ROUTERS = ( 'django_tenants.routers.TenantSyncRouter', ) TENANT_MODEL = "tenant_manager.Tenant" TENANT_DOMAIN_MODEL = "tenant_manager.Domain" and I have this toggle here for prod environment: if mode == 'webhook': DATABASES['default'] = dj_database_url.config( conn_max_age=600, ssl_require=True) The issue appears when I try to make migrations in the prod environment in Heroku Error log: <module 'os' (frozen)> Traceback (most recent call last): File "/app/manage.py", line 22, in <module> main() File "/app/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/app/.heroku/python/lib/python3.11/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line utility.execute() File "/app/.heroku/python/lib/python3.11/site-packages/django/core/management/__init__.py", line 413, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/app/.heroku/python/lib/python3.11/site-packages/django/core/management/base.py", line 354, in run_from_argv self.execute(*args, **cmd_options) File "/app/.heroku/python/lib/python3.11/site-packages/django/core/management/base.py", line 398, in execute output = self.handle(*args, **options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/.heroku/python/lib/python3.11/site-packages/django_tenants/management/commands/migrate_schemas.py", line 66, in handle executor.run_migrations(tenants=[self.PUBLIC_SCHEMA_NAME]) File "/app/.heroku/python/lib/python3.11/site-packages/django_tenants/migration_executors/standard.py", line 11, in run_migrations run_migrations(self.args, self.options, self.codename, self.PUBLIC_SCHEMA_NAME) File "/app/.heroku/python/lib/python3.11/site-packages/django_tenants/migration_executors/base.py", line 45, in run_migrations connection.set_schema(schema_name, tenant_type=tenant_type, include_public=False) ^^^^^^^^^^^^^^^^^^^^^ AttributeError: 'DatabaseWrapper' object has no attribute 'set_schema' -
What's the best way to handle valueless attributes in Django templates?
I'm looking for a cleaner way to conditionally add valueless HTML attributes, like disabled, in a Django template. For example, in the code snippet below, the {% if %} tag is embedded directly inside the <button> tag, which I find makes the code harder to read. <button type="submit" id="prev-page-btn" class="btn btn-secondary w-50" name="prev-page-btn" {% if not page_obj.has_previous %}disabled{% endif %}> Previous </button> Is there a more elegant solution for this? I'd like to avoid duplicating the entire <button> block just to control the presence of the disabled attribute. -
'querystring' received too many positional arguments when passed a QueryDict
I'm using Django 5.2 and I can't get my head around the following issue: In my view, I have something like this: removal_qs = request.GET.copy() # contains teams=1&teams=2 removal_qs.setlist('teams', [1]) Debugging shows: In [3]: type(removal_qs) Out[3]: django.http.request.QueryDict But when I try to use this with the {% querystring %} tag in a template, like so <a href="{{ request.path }}{% querystring qs %}">x</a> I get the error 'querystring' received too many positional arguments. The documentation for the querystring template tag specifically says that This tag requires a QueryDict instance, which defaults to request.GET if none is provided. So where am I doing this wrong? -
Heroku not finding my static files with Django
Hello I'm on a fullstack course with the Code Instiute and both me and technical support have been stumped on this issiue: After deploying on Heroku no css or js loads or runs. error from chrome inspect console log: turnpenny-fry-syndrome-98cd38841f84.herokuapp.com/:1 Refused to apply style from 'https://turnpenny-fry-syndrome-98cd38841f84.herokuapp.com/static/css/style.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled. css is linked in html like so: <link rel="stylesheet" href="{% static 'css/style.css' %}"> settings file: STATIC_URL = "static/" STATICFILES_DIRS = [os.path.join(BASE_DIR, "static" ),] STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles") Relative file path of my css file: static\css\style.css And Debug is always set to False when deploying. Seemingly the error messages show the right path for the files both in vs code and on github, seems like now its Heroku not reading from github correctly??? Have grone through Django documentation: https://docs.djangoproject.com/en/4.2/ref/settings/#static-url https://docs.djangoproject.com/en/4.2/ref/contrib/staticfiles/#django-admin-findstatic both me and support staff on my course have many times checked my settings file, .python-verion file, base.html links and commented out js link so i can just focus on css first also, I checked config vars and they appear all correct. -
Is using Google Cloud Tasks to invoke an internal Django endpoint effectively asynchronous (even under WSGI)?
I'm running a Django application on Google Cloud Run using the default WSGI-based setup (e.g., Gunicorn/ runserver for local dev). To avoid blocking during long-running operations like third-party API calls, I'm planning to use Google Cloud Tasks. Current design: A request comes in to a Django endpoint (e.g., a webhook or ping from an external service) Instead of processing the request inline, I enqueue a Cloud Task That task posts to another Django endpoint within the same service, which performs the third-party API call using data passed in the task payload This means: I'm not offloading the work to a separate Cloud Run service The fetch logic is still part of the same Django service/container, just decoupled by the task My question: Does this setup allow the third-party call to be effectively asynchronous (i.e., non-blocking to the original request), despite using WSGI and not ASGI or Celery? When searching around, I mostly see articles and examples where Cloud Tasks are used to call a separate Cloud Run service, not another internal route in the same app. Is this internal invocation pattern valid and scalable under WSGI, or are there caveats I should be aware of? -
Django multi-app authentication: sharing custom token validation and permissions across separate codebases
I'm building a multi-platform system where I have one central authentication service (let's call it "Auth") and multiple other Django applications (App1, App2, App3) that need to authenticate users with custom tokens and permissions. Current Setup: Auth service: Handles user registration, login, token management App1, App2, App3: Separate Django projects with their own database and business logic All apps need to validate users authenticated through the Auth service Authentication Flow: User logs in through Auth service → receives token User makes requests to App1/App2/App3 with that token App1/App2/App3 need to validate the token and get user data Authentication Model: class AuthToken(models.Model): token = models.CharField(max_length=48, unique=True) user = models.ForeignKey(User, on_delete=models.CASCADE) platform = models.ForeignKey(Platform, on_delete=models.CASCADE) expires_at = models.DateTimeField(null=True, blank=True) is_revoked = models.BooleanField(default=False) # other fields (ip, device_id, device_name, etc...) Token Configuration: Settings.py # settings.py REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': [ 'path.to.authentication.AuthTokenAuthentication', ], 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.IsAuthenticated', ], } Authentication Class # path/to/AuthTokenAuthentication.py class AuthTokenAuthentication(BaseAuthentication): """ Simple, clean AuthToken authentication. """ def authenticate(self, request): # Get Authorization header auth_header = request.META.get('HTTP_AUTHORIZATION') if not auth_header or not auth_header.startswith('Bearer '): return None # No token provided # rest of my code The Problem: App1, App2, App3 need to use the same custom AuthTokenAuthentication and permission classes, but … -
Refresh token being passed in response body in registration but not login in Django
I am using the Django REST Framework with dj-rest-auth and django-allauth for authentication and authorisation with JWTs. From what I have heard, using HTTP-only cookies to store the tokens is a secure approach where the access token is passed in the response body but the refresh token is passed to the browser as a cookie. The default login endpoint works this way, returning the access token in the response body and returning the access and refresh tokens as HTTP-only cookies as well as a csrftoken and sessionid. However, the signup endpoint doesn't exhibit the same behaviour, it returns both access and refresh tokens in the response body and returns neither as a cookie, but does return these cookies: messages, csrftoken, sessionid. Does anyone know why this might be happening and how I could get registration to behave the same way as login? Here are the relevant parts of my settings.py: REST_AUTH = { "USE_JWT": True, "JWT_AUTH_COOKIE": "access-tkk", "JWT_AUTH_REFRESH_COOKIE": "refresh-tkk", # "JWT_AUTH_SECURE": True, # Use secure cookies in production for HTTPS only "JWT_AUTH_HTTPONLY": True, # Secure HTTP-only cookies "REGISTER_SERIALIZER": "authentication.serializers.CustomRegisterSerializer", "USER_DETAILS_SERIALIZER": "authentication.serializers.CustomUserDetailsSerializer", } SIMPLE_JWT = { "ACCESS_TOKEN_LIFETIME": timedelta(minutes=15), # Short-lived access token "REFRESH_TOKEN_LIFETIME": timedelta(days=14), # Longer-lived refresh token "ROTATE_REFRESH_TOKENS": True, # … -
Weasyprint Turn Off all the Warnings
Using WeasyPrint but it is always overwhelming me with INFO, DEBUB messages. How do I turn them all off? Nothing i have tried works. (Using Django) Thanks -
Is there a way to reduce polling woth django dramtiq
I have a webapp using django hosted on render cloud platform which allows users to make api call to deepseek. These api calls sometimes take 5 minutes to respond, and doing so with async may cause issues if user connection drops. So I planned to use a Dramatiq background worker hosted on a render service too seperate to the web app. I set up redis with upstash and connected to dramtiq and it turned out it was polling redis hundreds to thousand per minute which on upstash equates to commands which equates to a high cost. So my goal is to reduce the polling to once per minute to reduce my redis commands number to reduce costs. I have tried setting up gevent too but now sure how to reduce redis polling with dramtiq and also use gevent.