Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django form validation problem in clean method
I'm new to the Django. Here, whenever I submit the form, validation error didn't appear even though I made mistake in filling form and also validation error isn't visible on the front end. Seek help soon as possible views.py form.py Url.py -
401 Authentication issue with Django using DRF and Django Rest Knox with correct credentials
I'm getting the error 401 when I try to log into my Django application after I tried to implement Django Rest Knox's Token Authentication. I've only very slightly customized Django's Knox LoginView function, and am using a custom User model, which essentially uses organizations' emails in the "username" field. My objectives are: Multiple tokens per user (for multiple device support). Token removal upon logout (security best practice). Feature to remove all tokens (logout from all devices). Secure token storage (encryption/decryption). Token expiration. However, I'm stuck at the authentication at the moment. Django 4.2.3. Django Rest Framework 3.14.0. Django Rest Knox 4.2.0. It's still not deployed, so it's in DEBUG mode, and I'm running the server in WSL in the localhost while I develop it. It just doesn't make any sense. It says the credentials were not provided, but they quite clearly were there when I tested with Insomnia. Relevant sections from my settings.py: INSTALLED_APPS = [ 'accounts', 'knox', 'rest_framework', (..) ] # AUTH USER AUTH_USER_MODEL = 'accounts.CustomUser' # REST FRAMEWORK REST_FRAMEWORK = { 'DEFAULT_AUTHENTICATION_CLASSES': ('knox.auth.TokenAuthentication',), } REST_KNOX = { 'SECURE_HASH_ALGORITHM':'cryptography.hazmat.primitives.hashes.SHA512', 'AUTH_TOKEN_CHARACTER_LENGTH': 64, # By default, it is set to 64 characters (this shouldn't need changing). 'TOKEN_TTL': timedelta(hours=8), # The default … -
How to solve "OperationalError: database is locked" with simultaneous /admin and management command sessions?
I'm using django with sqlite for a web application which executes a long-running management command to update the database (./manage.sh download_company_data). However, while it's running, I'm unable to create a new user in the Django admin interface. I've already increased the timeout option for the database to 20000: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', 'OPTIONS': { 'timeout': 20000 }, } } The operational errors are immediate, though, ignoring the configured timeout. They happen after clicking on the save button when trying to add a user to the database. I'm simultaneous running the database update process and a runserver process for the admin site. The individual updates are simple and fast, don't access the User table and I have also tried to disconnect from the database and sleep to give room for the server process: for line in c: line = preprocess(line, prefix) search = { unique: line[unique] } for i in range(10): try: Model.objects.update_or_create(**search, defaults=line) break except OperationalError as e: info('Operational error. Delayed retry...') sleep(0.02) connections.close_all() sleep(1) I don't understand why the admin site is repeatedly giving operational errors mentioning the database is locked, even when there's only 1 connection to the sqlite file most … -
The logic of the ORM request does not work
I wanted to make a request to store the winners of the category model in it. That is, there are several nominations in each category, and category_nomination is attached to MemberNomination (work of user). I have a function that looks for category_nomination winners and it kind of works. But I can't do the same with category. I have the sum of the result__score from each MemberNomination from different EventStaff, but I need to make sure that these result__scores from MemberNomination are summed up, find the member who has the highest score in a certain category! But my code gives me MemberNomination those with the highest scores of the sum result__score and belong to a certain category. For example, now he gives me: 1 place Alexey Volkov 22 points 2nd place Ghost Face 12 points 3rd place Ghost Face 11 points That is, if my code worked correctly, it would give: 1st place Ghost Face 23 points 2nd place Alexey Volkov 22 points 3rd place ??? ??? That is, the same member has several MemberNomination, but they need to be added together, since they belong to the same category My models.py: from django.db import models from django_resized import ResizedImageField class PlaceChoices(models.IntegerChoices): … -
Django IntegrityError with UniqueConstraint when switching field value between two entries
I'm trying to write a Model in Django to add emails with specific attributes/options to a contact. As there should only be one billing mail per contact, I added a UniqueConstraint. Adding, updating and deleting entries works fine. However when I want to change which email address is the billing email address I get an error, when I try to just switch the checkboxes between the two entries (disable one and enable the other at the same time/in one go). As a workaround I can first disable the checkbox and save, then enable the other one and save again. For example in this picture I want to make billing@abc.com my billing email, which currently is admin@abc.com. Now when I change the checkboxes as described I get the following error: Django Version: 4.2.5 Exception Type: IntegrityError Exception Value: UNIQUE constraint failed: account_email.contact_id, account_email.is_billing_email The model used for this does look like this: class Email(models.Model): contact = models.ForeignKey(Contact, on_delete=models.CASCADE, related_name="contact_emails") email = models.EmailField(max_length=254, db_index=True, null=False, blank=False) is_contact_email = models.BooleanField(_("contact email"), default=True) is_billing_email = models.BooleanField(_("billing email"), default=False) is_subscribed_to_status_notifications = models.BooleanField(_("status notifications"), default=True) is_subscribed_to_newsletter = models.BooleanField(_("newsletter"), default=True) class Meta: constraints = [ models.UniqueConstraint( fields=["contact", "email"], name="contact_and_email_unqiue" ), models.UniqueConstraint( fields=["contact", "is_billing_email"], name="one_billing_email_per_contact", condition=models.Q(is_billing_email=True) ) ] … -
Get the last record for each createdAt
i have this like models class Ticket(UpdateCreateDate): user = models.ForeignKey( User, null=True, on_delete=models.PROTECT, related_name="user" ) bus = models.ForeignKey( Bus, null=True, on_delete=models.PROTECT, related_name="bus_tickets" ) PDA= models.ForeignKey( Material, on_delete=models.PROTECT, related_name="terminal" ) geolocalisation = models.ForeignKey( Geolocalisation, on_delete=models.PROTECT, null=True, blank=True, related_name="geolocalisation", ) i whant to get that format { "today"[{ "itineraire":"Upn - Gare-centrale", "PDA":"PDA-13", "Bus":"TB200", "Driver":"Mr Landu", "date":"20/01/2023", "vente-par-cash":"30", "pu":"30", }], "yesterday"[{ "itineraire":"Upn - Gare-centrale", "PDA":"PDA-13", "Bus":"TB210", "Driver":"Mr Bob", "date":"20/01/2023", "vente-par-cash":"30", "pu":"30", }] } CAN you please help me -
paypal get data back from webhook
So I'm trying to get back my order id from my paypal webhook. I am able to create this paypal checkout page with this code. @csrf_exempt def create_payment(request, id): print(os.environ.get("PAYPAL_API_KEY")) print(id) item = Product() discount = Discount() order_data = get_order_data_func(id) items = [] price = 0 for product in order_data["products"]: product_info = item.get_by_id(product["product"]).to_dict() obj = { "name": product_info["name"], "sku": product_info["name"], "price": int(product_info["price"]), "currency": "EUR", "quantity": product["quantity"] } price += int(product_info["price"]) * product["quantity"] items.append(obj) if order_data["order"]["discount"] is not None: price = price - (price * discount.get_by_id(order_data["order"]["discount"]).percentage / 100) payment = paypalrestsdk.Payment({ "intent":"sale", "payer":{ "payment_method":"paypal" }, "redirect_urls":{ "return_url":"http://localhost:3000/order/success", "cancel_url":"http://localhost:3000/order/cancel" }, "transactions":[{ "item_list":{ "items":items }, "amount":{ "total":price, "currency":"EUR" }, "description":"This is the payment transaction description.", "custom_id": order_data["products"][0]['order'] }] }) if payment.create(): return JsonResponse({'status': 'success', "url": payment.links[1].href}) else: return JsonResponse({'status': 'error'}) I have a webhook running using ngrok I also get back a response but I have not found much online on how to decrypt the response body to see all the data. This is my current function which is called through the webhook. @csrf_exempt def check_paypal_status(request): print(json.loads(request.body)) return JsonResponse({'status': 'success'}) All help is greatly appreciated! -
Can't get Django Channels websockets to connect. Using Django, Daphne and Nginx on Ubuntu 22 with Supervisor
I have been working on getting this figured out for days and I feel like I am close to getting it but I have no idea what to try next. This is how my code is setup: I use Celery to pull data from 2 apis and upload them to my database. I have a post_save method that sends serialized data to my consumers.py I have a javascript script that reads the websocket and plots it. I have a webpage with 3 websockets and 2 of them work fine but one of them I can't get to work and I can't figure out how to troubleshoot it. models.py showing the Gex model which isn't working and the Breadth model which is working. import json from django.db import models from asgiref.sync import async_to_sync from channels.layers import get_channel_layer from django.db.models.signals import post_save from django.dispatch import receiver class Notice(models.Model): date_posted = models.DateTimeField(auto_now_add=True) notice = models.TextField() def get_date_posted(self, obj): return obj.date_posted.strftime('%H:%M:%S') def __str__(self): return f'{self.date_posted} {self.notice}' class Gex(models.Model): timestamp = models.DateTimeField(auto_now_add=False, auto_now=False) ticker = models.CharField(max_length=20) expiration = models.CharField(max_length=10) ratio = models.DecimalField(max_digits=6, decimal_places=2, null=True, blank=True) spot = models.DecimalField(max_digits=8, decimal_places=2) zero_gamma = models.DecimalField(max_digits=8, decimal_places=2) major_pos_vol = models.DecimalField(max_digits=8, decimal_places=2) major_pos_oi = models.DecimalField(max_digits=8, decimal_places=2) major_neg_vol = models.DecimalField(max_digits=8, decimal_places=2) … -
Update Django model field when auth token expires
I'm using JWT auth in Django, I need to set a field in one of my models to false when the access token expires. Is there anyway to monitor tokens like that? -
Static Files not working on PythonAnywhere - but working on local server
I'm deploying My web app on Pythonanywhere. After deployment, static files are not shown on it. While StaticFiles are working fine on Local Server. Lets just say staticfiles contain an image which is shown on Local Server on Home Page but doesn't show on pythonanywhere after deploying. What could be the issue? I tried adding static folder in each of my app, also as a global folder. Also, configured it on settings.py correctly as well. STATIC_URL = "static/" STATICFILES_DIRS = [ BASE_DIR / 'static', ] Here's the link to my website: http://syedhamza10.pythonanywhere.com/ It is supposed to show a logo along with The Vision Realtor -
My django-server doesn't find my CSRF token
CORS related: CSRF_TRUSTED_ORIGINS = ['http://127.0.0.1:8000', 'http://127.0.0.1:8001', 'http://localhost:3000'] CORS_ORIGIN_ALLOW_ALL = True CORS_ALLOW_CREDENTIALS = False CSRF_HEADER_NAME = "X-CSRFToken" CORS_EXPOSE_HEADERS = [ 'Content-Type', 'X-CSRFToken' ] My react-code: const fetchToken = async () => { try { const getTokenApiUrl = UrlApi + `/payment/`; const response = await fetch(getTokenApiUrl); const jsonData = await response.json(); setCsrfToken(jsonData.token) } catch (error) { console.error('Feil ved henting av data:', error.message); } }; Cookies.set('X-CSRFToken', csrfToken, { expires: 7}); const response = await fetch(sendPayementUrl, { method: 'POST', // Angi metoden til POST headers: { 'Accept': 'application/json', 'Content-Type': 'application/json', 'X-CSRFToken' : Cookies.get('X-CSRFToken'), }, My views.py code: @csrf_protect def initializePayment(request): if request.method == 'GET': data = { 'token' : None } data['token'] = get_token(request) print(data) return JsonResponse(data, status=200) elif request.method == 'POST': received_token = request.headers.get('X-CSRFToken') # Hent token fra headeren print(received_token) try: data = json.loads(request.body) except Exception as e: print("Fikk ikke hentet data fra request") else: print("Data:", data) print("Sukess") return JsonResponse({'message': 'Dine data ble behandlet riktig.'}) else: return JsonResponse({'error': 'Noe gikk galt'}) The POST-request is accepted by the CORS, but django tells me that "Forbidden (CSRF cookie not set.)". I can see by my eyes, that the token is send to the frontend when it reloads, placed in the cookies-storage by my code in … -
How to upload a Django project to Hostinger
Someone know how can I post a Django project on Hostinger, I have tried a lot of things and I can't do it, do I need a VPS and a Host, or only one, and how can I post it?, and also I made my project with html pages I expect that u can help me, all help is welcome. -
Django form using DateTimeRangeField will not validate
When trying to check if the form is valid using .is_valid(), I get AttributeError: 'list' object has no attribute 'strip' for my DateTimeRangeField. I am using RangeWidget(forms.SplitDateTimeWidget(date_attrs={"type": "date"}, time_attrs={"type": "time"},),), with postgres db. I switched the backend from sqlite3 to postgres so I could use the DateTimeRangeField and the debugger shows the correct information in the POST request. Do I need to switch my datetimerange column/field into two columns, datetime_start and datetime_stop? Or is there another way to validate that I have missed? Should I just separate out the range into a separate form and use a key to connect it to my current form? I would like to add the ability to add many time ranges in the same form in the future. -
drf-spectacular generate got multiple values for keyword argument 'context' error
Django 3.2/ DRF 3.14.0 When forming a page with api documentation, an error is observed in the console got multiple values for keyword argument 'context' Code sample class CustomBatchView(mixin.ListModelMixin, mixin.CreateModelMixin, VendorViewSetMixin): def_serializer(self, *args, **kwargs): context = {'request': self.request} if self.action == 'create': return BatchCreateSerializer(*args, context=context, **kwargs) elif self.action in ['update', 'partial_update']: return BatchUpdateSerializer(*args, context=context, **kwargs) else: return BatchSerializer(*args, context=context, **kwargs) The problem is that when Viewsets in DRF calls get_serializer, it passes context inside kwargs. So when I try to pass the context separately, there is a conflict. The reason why I need separate context attribute is because using this logic further in self.context.get('request') So if implement this if 'context' in kwargs: del kwargs['context'] inside get_serializer All work perfect. Such a problem does not arise with business logic. Only at the moment of forming API documentation. What can this be related to and how can it be fixed? -
After cmd python manage.py runserver, project is running but some options of admin panel is showing does not exist after clicking on it
`Environment: Request Method: GET Request URL: http://127.0.0.1:8000/account/profile/ Django Version: 3.1.14 Python Version: 3.11.5 Installed Applications: ['jazzmin', 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', 'administration', 'teacher', 'student', 'academic', 'employee', 'result', 'address', 'account', 'attendance'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback (most recent call last): File "C:\Users\hp\Envs\school_management_system\Lib\site-packages\django\core\handlers\exception.py", line 47, in inner response = get_response(request) File "C:\Users\hp\Envs\school_management_system\Lib\site-packages\django\core\handlers\base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) File "G:\VS Code Files\school_management_system-master\account\views.py", line 7, in profile profile = UserProfile.objects.get(id=request.user.id) File "C:\Users\hp\Envs\school_management_system\Lib\site-packages\django\db\models\manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "C:\Users\hp\Envs\school_management_system\Lib\site-packages\django\db\models\query.py", line 429, in get raise self.model.DoesNotExist( Exception Type: DoesNotExist at /account/profile/ Exception Value: UserProfile matching query does not exist. I expect to run the project. -
Django administration
I create superuser Django administration gives me an error when trying to login (Please enter the correct username and password for a staff account. Note that both fields may be case-sensitive.) It can be said that I checked almost every option, but still I could not login to Django administration. How can I solve this problem? 1.Delete database 2.I delete migrations AND etc. -
django is expecting DNS record content in ALLOWED_HOSTS
i have a django app deployed on northflank and i register the domain on namecheap and am using cloudflare for dns management, i added the domain to django's setting.ALLOWED_HOSTS ALLOWED_HOSTS = ['www.domain.com'] and also configured the domain on northflank and also configured the dns record on cloudflare usin g the dns configuration settings northflank provided Record type CNAME CNAME/ALIAS/APEX Record name www .domain.com Expected Record Content www.domain.com.t16j-p585.dns.northflank.app Current Record Content No record found everything is working fine but django keeps throwing this error: DisallowedHost Invalid HTTP_HOST header: 'www.domain.com.t16j-p585.dns.northflank.app'. You may need to add 'www.domain.com.t16j-p585.dns.northflank.app' to ALLOWED_HOSTS. its really confusing to see that django is expecting the dns record content to be added to the ALLOWED_HOSTS i have tried to flush the dns cache but i still get the error -
How to handle foriegn key in djanog user model, When I do not want admin user to have a foreign key?
My custom user model has forigen key info I want each user to have an acount in my app with some infomration(linked to the info model) But the admin user has no such account it only manages the user information I do not want admin user to have a foriegn key So if I set the defalut=null I get "NOT NULL constraint failed: app_myuser.info_id" Or if i set defualt=0 I get FOREIGN KEY constraint failed Please tell me the right way to handle this situation from django.db import models from django.contrib.auth.models import BaseUserManager, AbstractBaseUser class info(models.Model): name = models.CharField(max_length=30) age = models.IntegerField(default=0) class MyUserManager(BaseUserManager): def create_user(self,username ,key,password=None): user = self.model(username=username) user.set_password(password) user.save(using=self._db) user.info = key return user def create_superuser(self, username, password=None): user = self.model(username=username) user.set_password(password) user.is_admin = True user.save(using=self._db) return user class MyUser(AbstractBaseUser): username = models.CharField(max_length=30, unique=True) is_active = models.BooleanField(default=True) is_admin = models.BooleanField(default=False) info = models.ForeignKey(info, on_delete=models.CASCADE ,default=None) objects = MyUserManager() USERNAME_FIELD = "username" def __str__(self): return self.username @property def is_staff(self): return self.is_admin -
If statement in Django Model related to an other model
I'm building a Django Python App and I am facing a problem. For some reason, I would like to implement a different price (Produit.PU_HT_WH) according to the customer (client) type (retailer or wholesaler (booleans). I would like to implement it to my models.py so that I don't have to changes Models.py (Produit) : class Produit(models.Model): id_Prod = models.CharField(max_length=200, null=True) EAN = models.IntegerField() PU_HT_WH = models.FloatField(null=True) denomination = models.CharField(max_length=200, null=True) def __str__(self): return self.id_Prod def PU_HT(self): if self.client.retailer: PU_HT= (self.PU_HT_WH/ 0.85) else : PU_HT = self.PU_HT_WH return PU_HT Models.py (Client) : class Client(models.Model): id_Client = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE) nom_client = models.CharField(max_length=200, null=True) prenom_client = models.CharField(max_length=200, null=True) raison_sociale = models.CharField(max_length=200, null=True) retailer = models.BooleanField(default=False, null=True) def __str__(self): return self.nom_client My goal here is that I just have to replace every " {{prod.PU_HT_WH|floatformat:2}}€ " to " {{prod.PU_HT|floatformat:2}}€ " to display prices according to the customer. The website works only on @login_required so I would like that the customer only sees his price. I hope that I've been enough understandable ! Thanks for every tips that you could give me :) I've tried many ways but I always have an error on that line : if self.client.retailer : I don't konw if it … -
Autocomplete city field with yandex suggestView
I have an input field for the city. I need a drop-down list of cities to appear when I start entering a city. ONLY CITIES. <input type="text" name="city" id="city"> I have a js function, but it shows not only cities, but also regions and the like, but I only need cities function onLoad (ymaps) { var suggestView = new ymaps.SuggestView('city'); } It would also be nice to add an error when pressing a button if the user has not selected anything from the list Hepl please -
Django CheckConstraint failing
I'm creating a custom user-model where every user needs a company assigned, unless they are a superuser or staff. To accomplish this, I'm adding 3 CheckConstrains as seen below: class CustomUser(AbstractUser): ''' Custom User class, username and email are required. Company is required except for staff and super users ''' company = models.ForeignKey(Company, on_delete=models.PROTECT, null=True, blank=True) class Meta(AbstractUser.Meta): constraints = [ CheckConstraint( check=Q(is_superuser=False, is_staff=False, company__isnull=False), name="user_must_have_company", ), CheckConstraint( check=Q(is_staff=True, company__isnull=True), name="staff_cannot_have_company", ), CheckConstraint( check=Q(is_superuser=True, company__isnull=True), name="superuser_cannot_have_company", ), ] Desired behaviour is: Super-users and Staff users cannot have a company all 'normal' users need to have a company set. However, all initial conditions fail on the same CheckConstraint user_must_have_company. user = CustomUser.objects.create(username='staffuser', is_staff=True, company=None) IntegrityError: CHECK constraint failed: user_must_have_company company = Company.objects.create(name='Test') user = CustomUser.objects.create(username='normal_user', is_staff=True, company=company) IntegrityError: CHECK constraint failed: user_must_have_company user = CustomUser.objects.create(username='superuser', is_superuser=True, company=None) IntegrityError: CHECK constraint failed: user_must_have_company What am I missing? -
How to extract data from a URL fragment Django
Hi I'm trying to learn development by creating a web app that displays users top Spotify stats and so I'm trying to use supabase to login to Spotify however the redirect gives a URL in the form of: http://127.0.0.1:8000/callback/#access_token= I'm currently working using Django and because the data is in a URL fragment I cant access it using request.get. How would I go about extracting the data from the URL. -
How to delete a application of django on Docker?
I created a application for Django (name is accounts), but I want to delete it for a reason. I've used Docker. So in virtual environment, I just remove the account folder, and it works, but in docker mode, I get this error. even i down container but it isn't working -
Google OAUTH2 using django-socialauth
I have a django project in which i'm using django-social-auth to implement google and facebook. From the side it seems to work quite well as i've been able to register and login using it. However, as soon as i turn google API into production, i get an error of mismatch_url. In the credentials => Authorized redirect URIs i have this url: https://www.swimseekr.com/social-auth/complete/google-oauth2/ but when i try to login, google give me this error: which shows an http url: You can't sign in to this app because it doesn't comply with Google's OAuth 2.0 policy. If you're the app developer, register the redirect URI in the Google Cloud Console. Request details: redirect_uri=http://www.swimseekr.com/social-auth/complete/google-oauth2/ so if i go back to testing mode, and remove the 's' from http, and try to login, it works again. Anyone, can help me on this? Thank you. -
How to send ajax post request for a video file in Django?
I want to send an ajax post request to a django view for a video file. I am creating a simple page where the user could record his camera and audio. After the user stops recording, the recorded video file would then automatically be sent to a backend view where I would save it to the database. Here is my current template with javascript. <body> <video muted id="video" autoplay></video> <button id="btn">Start Recording</button> <button id="stopbtn">Stop Recording</button> <script src="script.js"></script> </body> <script> window.onload = function () { const parts = []; let mediaRecorder; navigator.mediaDevices.getUserMedia({ audio: true, video: true}).then(stream => { document.getElementById("video").srcObject = stream; document.getElementById("btn").onclick = function () { mediaRecorder = new MediaRecorder(stream); mediaRecorder.start(1000); mediaRecorder.ondataavailable = function(e) { parts.push(e.data); } } }); document.getElementById("stopbtn").onclick = function () { mediaRecorder.stop(); const blob = new Blob(parts, { type: "video/webm" }); // Create a FormData object to send the Blob const formData = new FormData(); formData.append("video_blob", blob); // Make the ajax call $.ajax({ url: '/save-video/', type: 'POST', success: function (res) { console.log("video uploaded successfully") }, data: formData, cache: false, contentType: false, processData: false }); } }; </script> And I want to send it to the following view. def save_video(request): if request.method == "POST" and request.FILES.get("video_blob"): uploaded_blob = request.FILES["video_blob"] …