Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
How to properly type client.post response in django test?
@pytest.mark.django_db def my_test( self, client, ): with monkeypatch_requests(resp_json={'values': []}): r: JsonResponse = client.post( self.endpoint, self.request_payload, content_type='application/json', ) assert r.status_code == 201, r.content assert r.json() == {'key': value} PyCharm is complainging Unresolved attribute reference 'json' for class 'JsonResponse', but I can use it. When I run the test in debugger and hover over json I can see functools.partial(<bound method ClientMixin._parse_json of <django.test.client.Client object at 0x7f3b81399d30>>, <JsonResponse status_code=201, "application/json">) -
Django what if the change is applied on database manually
I have short question. Let's assume in migration file I have some change that was already done manually on database level. Does migration will be applied without throwing an error? -
I can not find mod_wsgi model in Apache modules environment - Django
I am new to Django and I tried to connect it with Apache through mod_wsgi but it seems new versions of Apache does not support such kind of module. Am I right? Or is there any different way I could deploy my Django project in production? I saw on the official page I could use nginx. Any opinions? -
Django threaded / nested comments
What's the best way to implement threaded/nested comments in Django? I've read a bit about MPTT and django-threadedcomments but all the posts seem to be from years ago. Is using MPTT still the 'accepted' way or is there a newer way to do it? -
nowait or another method in Django admin page
I'm using Django and trying to find something similar to nowait=True in Django admin page. I have some script which locks entries(select for update) during working. So, when I try to change some fields values in Django admin page for that entry when its locked, admin page waits for unlocking that entry(in my case it could take minutes). I want to raise error(something like "database entry is locked") in admin page without waiting for unlocking. -
Django request.session.get() returns None across different view classes
I am working on a Django project and I'm encountering an issue with session variables. I set a session variable in one view, but when I try to access it in another view, it returns None. Here's a simplified version of my code: In my LoginVerification view: from rest_framework.views import APIView from rest_framework.response import Response class LoginVerification(APIView): def post(request): # ... login logic ... # If login is successful, I store the AWS access key in the session request.session['aws_access_key'] = 'your-access-key' return Response({"message": "Login successful"}) In my BucketSize view: from rest_framework.views import APIView from rest_framework.response import Response class BucketSize(APIView): def get(self, request): # Here, I try to retrieve the AWS access key from the session aws_access_key = request.session.get('aws_access_key') if aws_access_key is None: return Response({'status': 'error', 'error': 'No AWS access key found in session.'}) # ... remaining logic ... return Response({'status': 'success', 'bucketsize': bucketsize, 'unit': unit}) In the BucketSize view, request.session.get('aws_access_key') is always returning None, even though I have set it in the LoginVerification view. I have checked the following: The session variable is being set: The code in the LoginVerification view is running without errors. The session has not expired: I'm testing the BucketSize view immediately after the LoginVerification view. … -
for displayeding two digits id's
def project_list(request): project_details = Project.objects.all().exclude(status__gt=1) users_details = Users.objects.all().exclude(status__gt=1) return render(request, 'project/list.html', {"projects": project_details, "users": users_details}) this view {% for user_id in project.users %} {% for user in users %} {% if user.id|stringformat:"s" == user_id %} {{ user.first_name }}, {% endif %} {% endfor %} {% endfor %} not displayed having two digit's in id's in above pic u can see for name_2 ihave passed id 11 not displayed I need to get like this in above screen name_2 firstname_1 id is 7 and like that it need to display two digit id 11 name firstname_4 -
Template variable for email in Django allauth socialaccount signup
What template variable does the email field in the form in socialaccount /signup.html in Django allauth use? In the allauth/templates/socialaccount/signup.html there is this form: <form class="signup" id="signup_form" method="post" action="{% url 'socialaccount_signup' %}"> {% csrf_token %} {{ form.as_p }} {% if redirect_field_value %} <input type="hidden" name="{{ redirect_field_name }}" value="{{ redirect_field_value }}" /> {% endif %} <button type="submit">{% trans "Sign Up" %} &raquo;</button> </form> To style the fields and delete labels I want to drop the form and use my own input fields. I can extract the tags inspecting the from in the browser but the value= from the email input field is already populated with my email address and I can't see the variable it uses. Can you help me with it? I tried to find it in the source code but i can't understand it. It seems that it renders the SocialAccount model in the form. I have tried from value="{{ email }}" to value="{{ socialaccount.get_social_account().user.get_email() }}" everything. -
django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'accounts.User' that has not been installed
i'm getting these error in my code: raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'accounts.User' that has not been installed Why am i getting this Error?? I can't understand why it doesn't work i'm added AUTH_USER_MODEL = 'accounts.User' to settings models.py from django.db import models from django.contrib.auth.models import AbstractBaseUser from .managers import UserManager from django.contrib.auth.mixins import PermissionRequiredMixin class User(AbstractBaseUser, PermissionRequiredMixin): email = models.EmailField(max_length=255, unique=True) phone_number = models.CharField(max_length=11, unique=True) full_name = models.CharField(max_length=100) is_active = models.BooleanField(default=True) is_admin = models.BooleanField(default=False) objects = UserManager() USERNAME_FIELD = 'phone_number' REQUIRED_FIELDS = ('email', 'full_name') # just for createsuperuser def __str__(self): return self.email @property def is_staff(self): return self.is_admin managers.py from django.contrib.auth.models import BaseUserManager class UserManager(BaseUserManager): def create_user(self, phone_number, email, full_name, password): if not phone_number: raise ValueError('user most have phone number') if not email: raise ValueError('user most have email') if not full_name: raise ValueError('user most have full name') user = self.model(phone_number=phone_number, email=self.normalize_email(email), full_name=full_name) user.set_password(password) user.save(using=self._db) return user def create_superuser(self, phone_number, email, full_name, password): user = self.create_user(phone_number, email, full_name, password) user.is_admin = True user.is_superuser = True user.save(using=self._db) return user forms.py from django import forms from .models import User from django.core.exceptions import ValidationError from django.contrib.auth.forms import ReadOnlyPasswordHashField class UserCreationForm(forms.ModelForm): password1 = forms.CharField(label='Password', widget=forms.PasswordInput) password2 = forms.CharField(label='Confirm Password', widget=forms.PasswordInput) class Meta: model … -
How to block Trinity.txt.bak calls in nginx
I am runnning some web servers using nginx as a proxy in front of django applications. Every now and then I see calls to https://*.[MY.DOMAIN]/nice%20ports,/Trinity.txt.bak being passed to Django which generates the exception "Invalid HTTP_HOST header". How can I block these kind of requests in nginx so they never reach Django? -
Django forget password in login page
We know in the Django login admin page you can just enter user/pass and log in to the admin panel. But is there any method to add the forget password option to this page? Or there is any package for it? -
Uploading BLOB from ts through django API to DB
I'm trying to upload some logData but in my database the informationfield is always empty, everything else gets uploaded correctly. I've tried two differnt ways, neither of them seem to work. I uploaded everything packed in a formdata with the logData as blob/string/... nothing worked The other way was creating an Object based on an interface and adding all the information (here aswell i tried string and blob) both didn't work, the field on the Database is always empty. I'm curios if i did something wrong cause the data should be in the database saved as log.csv with the hexstring in it i get the data as an UInt8Array ATM it looks like this: const test = new Blob([locAdjustmentBlob]) const formData = new FormData(); formData.append("log_user", locUser) formData.append("log_adjustment_blob", test) await store.state.apiHandler.postForm("/raw/logs/", formData) And in the the API: class Log(models.Model): log_id = models.AutoField(primary_key=True) log_user = models.CharField(max_length=50) log_adjustment_blob = models.BinaryField() If you need more information just ask Thanks! -
Django double User check
I’m aiming to establish a warehouse inventory manage system. Now I want to achieve that, when warehouse manager give the material to the worker for producing, I want the warehouse manager create a record(name, time, and manager name and so on) first, and then worker log in to his/her own site and check the record then confirm it. Which achieve double check. Is there any way to achieve it. Thank you for help. -
django admin styling is corrupted
I have just started learning Django and when I got to the admin page it appears to be corrupted, no style. I tried collectstatic which gave me an error, I tried to alter static_root but my settings.py does not have it. I tried to reload the page several times with Fn F5 but it did not help. I found some suggestions on the internet but they seem to be a bit too advanced for me, I don't want to make things worse. Is there something not too advanced you could recommend? Thank you! -
'method' object is not subscriptable in the browser
views.py def signup(request): if request.method == "POST": username = request.POST.get['username', False] firstname = request.POST.get['firstname', False] lastname = request.POST.get['lastname', False] email = request.POST.get['email', False] pass1 = request.POST.get['pass1', False] pass2 = request.POST.get['pass2', False] myuser = User.objects.create_user(username, email, pass1) myuser.firstname = firstname myuser.lastname = lastname myuser.save() messages.success(request, "Your Account has been succesfully created.") return redirect('signin') return render(request, "authentication/signup.html") when i click the signup button it says TypeError at /signup 'method' object is not subscriptable could you please help me to solve this? -
Using getStaticProps and getServerSideProps to make authenticated requests to django api
I have a next js application for the frontend and a django REST framework api on the backend. I am using jwt token authentication for my backend using django Simple JWT. Most of my api views are protected by authorization bearer header required. When my user logs in and is authenticated, my django backend responds with an access and refresh token with http only cookies. As I build this app I have a question. If I am making some requests to my backend protected routes with getServerSideProps or getStaticProps which don't run on the client, then is it actually necessary to protect some of my backend routes? If getServerSideProps or getStaticProps dont run on the client, then I don't run the risk of anyone making requests to my backend, considering I have CORS_ALLOWED_ORIGINS in my django settings to only allow requests from my frontend. -
Django Admin and Forms. BaseInlineFormSet. def clean( )
I need to implement a prohibition on removing the last ingredient from a recipe. So that the recipe is not left empty without ingredients, or make the recipe deleted when the last ingredient is deleted. I need to use BaseInlineFormset and method def clean( ), but i dont understand this class RecipeAdmin(admin.ModelAdmin): list_display = ('name', 'author', ) list_filter = ('name', 'author', ('tags', admin.RelatedOnlyFieldListFilter),) inlines = (IngredientRecipeInline, TagRecipeInline) class IngredientRecipeInline(admin.TabularInline): model = IngredientRecipe min_num = 1 class Recipe(models.Model): name = models.CharField( max_length=200 ) author = models.ForeignKey( User, related_name='recipes', on_delete=models.CASCADE, null=True, ) text = models.TextField( ) ingredients = models.ManyToManyField( Ingredient, related_name='recipes', through='IngredientRecipe' ) I"ve tried this but dont work class FormSet(BaseInlineFormSet): def clean(self): super(FormSet, self).clean() for form in self.forms: if not hasattr(form, 'cleaned_data'): continue data = form.cleaned_data if (data.get('DELETE') and form.instance.ingredients == 1): raise ValidationError('You cannot delete') -
Django does not seem to work with DigitalOcean Spaces
I have followed multiple tutorials on how to use the DigitalOcean object storage known as DigitalOcean Spaces on my Django project but I'm not able to do it. Actually, I was using it before and it was working, after that I moved the static files to Contabo Object Storage, and apparently their CDN is pretty slow so when I decided to go back to DO, it does not work anymore, I even went to the commit where I had it working and copied the exact same code. Here is the code I have on my settings.py: from storages.backends.s3boto3 import S3Boto3Storage class MediaStorage(S3Boto3Storage): bucket_name = "XXXX" class StaticStorage(S3Boto3Storage): bucket_name = "XXXX" DEFAULT_FILE_STORAGE = "nafssi.settings.MediaStorage" STATICFILES_STORAGE = "nafssi.settings.StaticStorage" AWS_ACCESS_KEY_ID = "XXXX" AWS_SECRET_ACCESS_KEY = "XXX/XXXX/XXXXX" AWS_S3_ENDPOINT_URL = "https://XXXX.fra1.digitaloceanspaces.com" AWS_S3_OBJECT_PARAMETERS = { "CacheControl": "max-age=86400", } MEDIA_URL = f"{AWS_S3_ENDPOINT_URL}/media/" STATIC_URL = f"{AWS_S3_ENDPOINT_URL}/static/" When I try python manage.py collectstatic I have the following error: You have requested to collect static files at the destination location as specified in your settings. This will overwrite existing files! Are you sure you want to do this? Type 'yes' to continue, or 'no' to cancel: yes Traceback (most recent call last): File "D:\Data\Dropbox\D Drive\Toubib\Nafssi\Code\manage.py", line 22, in <module> main() File … -
Can't get Django to use Postgres
I am trying to switch a local Django project from the default sqlite3 database to a postgres database. I've been through several tutorials but nothing seems to work and I'm not sure what I'm doing wrong. Steps I've performed: In my postgres shell I can see there is a database called testdb. I've created a psql user bb with password foobar I ran the following command to grant bb access: GRANT ALL PRIVILEGES ON DATABASE testdb TO bb; Back in my virtual environment I run brew services start postgresql which prints: ==> Successfully started `postgresql@14` (label: homebrew.mxcl.postgresql@14) In my Django project's settings.py I have the following database configuration: DATABASES = { "default": { "ENGINE": "django.db.backends.postgresql_psycopg2", "NAME": "testdb", "USER": "bb", "PASSWORD": "foobar", "HOST": "127.0.0.1", "PORT": "5432", } } Running python manage.py makemigrations produces the following error: /opt/miniconda3/envs/django-db/lib/python3.9/site-packages/django/core/management/commands/makemigrations.py:158: RuntimeWarning: Got an error checking a consistent migration history performed for database connection 'default': connection to server at "127.0.0.1", port 5432 failed: FATAL: password authentication failed for user "bb" warnings.warn( No changes detected Is there a step I've missed somewhere? No idea why there's no connection to the server available. -
Django cannot cast type integer to smallint when attempting to filter a queryset
I have an IntegerChoices Genre: from django.db import models # ... class Genre(models.IntegerChoices): fantasy = 0, scifi = 1, real = 2, #... and a book model that uses an ArrayField of PositiveSmallIntegerField with Genre as choices: from django.contrib.postgre.fields import ArrayField #... class Book(models.Model): #... genres = ArrayField(models.PositiveSmallIntegerField(choices=Genre.choices), null=True, blank=True)) #... When I try to filter by the genres field using values from the Genre choices I get an error that Django (or psycopg2) cannot cast an integer to a smallint: # traceback psycopg2.errors.CannotCoerce: cannot cast type integer to smallint[] LINE 1: ..."book" WHERE "book"."genres" @> 1::smallint... ^ The above exception was the direct cause of the following exception: # traceback django.db.utils.ProgrammingError: cannot cast type integer to smallint[] LINE 1: ..."book" WHERE "book"."genres" @> 1::smallint... ^ All of these attempts to filter trigger the above error: genre = Genre.scifi print(genre) # >>> 1 Book.objects.filter(genres__contains=genre) # error Book.objects.filter(genres=genre) # error However if I try to create a book instance with the genre everything works. book = Book.objects.create( #... genres=[genre] ) # no error print(book.genres) # >>> [1] Is the problem the PositiveSmallIntegerField? I couldn't find any "SmallIntegerChoices" as a replacement for the IntegerChoices. Or is it the way the filtering is/should … -
Django and Python Error: CustomUserAdmin has no attribute '_meta'
I am working on Django for Beginners and I have the following error message. Traceback message: (.venv) andrewstribling@Andrews-MBP news % python manage.py makemigrations accounts Traceback (most recent call last): File "/Users/andrewstribling/Desktop/code/news/manage.py", line 22, in <module> main() File "/Users/andrewstribling/Desktop/code/news/manage.py", line 18, in main execute_from_command_line(sys.argv) File "/Users/andrewstribling/Library/Python/3.9/lib/python/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line utility.execute() File "/Users/andrewstribling/Library/Python/3.9/lib/python/site-packages/django/core/management/__init__.py", line 416, in execute django.setup() File "/Users/andrewstribling/Library/Python/3.9/lib/python/site-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/Users/andrewstribling/Library/Python/3.9/lib/python/site-packages/django/apps/registry.py", line 124, in populate app_config.ready() File "/Users/andrewstribling/Library/Python/3.9/lib/python/site-packages/django/contrib/admin/apps.py", line 27, in ready self.module.autodiscover() File "/Users/andrewstribling/Library/Python/3.9/lib/python/site-packages/django/contrib/admin/__init__.py", line 50, in autodiscover autodiscover_modules("admin", register_to=site) File "/Users/andrewstribling/Library/Python/3.9/lib/python/site-packages/django/utils/module_loading.py", line 58, in autodiscover_modules import_module("%s.%s" % (app_config.name, module_to_search)) File "/Library/Developer/CommandLineTools/Library/Frameworks/Python3.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "/Users/andrewstribling/Desktop/code/news/accounts/admin.py", line 27, in <module> admin.site.register((CustomUser, CustomUserAdmin)) File "/Users/andrewstribling/Library/Python/3.9/lib/python/site-packages/django/contrib/admin/sites.py", line 118, in register if model._meta.abstract: AttributeError: type object 'CustomUserAdmin' has no attribute '_meta' So the last line there in the traceback that says my class customuser admin says attribute has no meta. I think that makes since because there isn't a … -
Why does an empty Django queryset truthy value not equal None?
I have an empty queryset type Foo which I expected to be None returning False when checked. Here is what my code looks like: >>> queryset = Foo.objects.all() >>> queryset <FooQuerySet []> >>> queryset is None False I'd hoped for True since its an actual empty queryset. -
MySQL server won't connect to PythonAnywhere Django website
Despite all of my efforts, I consistently get this message in the error logs when I try to open my site: django.db.utils.OperationalError: (1045, "Access denied for user '<myusername>'@'10.0.0.116' (using password: YES)"). My database connection code in Django is this: DATABASES = { "default": { 'ENGINE': 'django.db.backends.mysql', 'NAME': '<myusername>$<mydatabasename>', 'USER': '<myusername>', 'PASSWORD': password, #This links to a password variable that was * imported in from another file 'HOST': '<myusername>.mysql.pythonanywhere-services.com', } } I have attempted to change the 'PORT' numerous times. It hasn't worked with a default '3306' port, an empty '' port, or in the current form with excluding the 'PORT' altogether. I have also included the password in the file natively, rather than importing it, but that also changed nothing. I'm very confused here as everything I've seen online appears to state that what I'm doing is correct, but it is still not working. -
Select2 responsiveness with DAL (Django Autocomplete Light) - Width 100% !important not working
It's been a struggle for the past day to me. I've looked everywhere on the internet and can't manage to get it done. I use DAL and initialize widget with URLs. So far so good: sector = django_filters.ModelMultipleChoiceFilter( queryset=Sector.objects.all(), widget=autocomplete.ModelSelect2Multiple( url="sector-autocomplete", attrs={ "data-placeholder": "Secteur", }, ), ) The problem occurs when I resize the page. The select2 items always overflow my container. There seems to be no other items which could be responsible for this overflow. The general recommendation is to set the following css rule: .select2 { width: 100%!important; } It actually feels like it's working when I begin reducing the viewport's width, until a point where the width remains fixed. The css rule on .select2 is actually taken into account, however the computed width seems to still be fixed. <select name="sector" data-placeholder="Secteur" id="id_sector" data-autocomplete-light-language="fr" data-autocomplete-light-url="/sector-autocomplete/" data-autocomplete-light-function="select2" multiple="" data-select2-id="id_sector" tabindex="-1" class="select2-hidden-accessible" aria-hidden="true"> </select> <span class="select2 select2-container select2-container--default" dir="ltr" data-select2-id="6" style="width: 428.5px;"> <span class="selection"> <span class="select2-selection select2-selection--multiple" role="combobox" aria-haspopup="true" aria-expanded="false" tabindex="-1" aria-disabled="false"> <ul class="select2-selection__rendered"> <li class="select2-search select2-search--inline"><input class="select2-search__field" type="search" tabindex="0" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="searchbox" aria-autocomplete="list" placeholder="Secteur" style="width: 416.5px;"> </li> </ul> </span> </span> <span class="dropdown-wrapper" aria-hidden="true"> </span> </span> I tried setting the width:100% setting on window resize with Javascript, but … -
How to set HTTP client hints in Django web app?
I would like to set HTTP client hints in a Django web app. I am especially interested in Sec-CH-Prefers-Color-Scheme, which is supported in Chromium browsers to detect the preferred color theme server side. It seems I have to send the browser the hint somehow so that it includes it in the request headers.