Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django Reverse Match when using AJAX
I am having difficulties in getting my reverse match to work. I am using Django and Ajax to make an asynchronous entry/update in the database. My URLs looks like this: path('overview/<int:year>/<int:month>/<int:day>/$', overview_view, name='overview'), My AJAX call looks like this: var csrf = $("[name=csrfmiddlewaretoken]").val(); $('#location-select1').on('change', function () { var location_selection = this.value; console.log(location_selection) $.ajax({ url: '', type: 'POST', data: { office_id: location_selection, // TODO adjust with office that is selected csrfmiddlewaretoken: csrf }, }); }); $(document).ajaxStop(function () { window.location.reload(); }); My Error message from Django Debugger looks like this: django.urls.exceptions.NoReverseMatch: Reverse for 'overview' with keyword arguments '{'year': '', 'month': '', 'day': ''}' not found. 2 pattern(s) tried: ['overview/(?P<year>[0-9]+)/(?P<month>[0-9]+)/(?P<day>[0-9]+)/\\$$', 'overview/$'] What am I doing wrong? Thanks a lot!! -
connection between angular 9 django 2 and oracle DataBase
hello can anyone suggest me a good tutorial or help me get angular and django and oracle connected as soon as possible i have tried searching on youtube but i'didnt find anything useful thanks ! -
Como posso construir uma view que filtra uma lista objetos que depende de outra lista de objetos?
Como posso construir uma view que envia por contexto uma enquete, as alternativas dessa enquete, e o total de votos de cada uma dessas alternativas? É possível realizar tudo em apenas uma view? Meus Models class Enquente(models.Model): enquete_texto = models.TextField(max_length=500) def __str__(self): return self.enquete_texto class Alternativa(models.Model): enquete = models.ForeignKey(Enquente, on_delete=models.CASCADE) nome_alternativa = models.CharField(max_length=50, null=True, blank=True) def __str__(self): return self.nome_alternativa class Voto(models.Model): alternativa = models.ForeignKey(Alternativa, on_delete=models.CASCADE) quant_votos = models.IntegerField(default=0, null=True, blank=True) data_voto = models.DateField(auto_now=True) def __str__(self): return str(self.quant_votos) Minha View def resultado_enquete(request, id): enquete = Enquente.objects.get(pk=id) alternativas = Alternativa.objects.filter(enquete_id=enquete.id) votos = Votos.objects.filter(alternativas) #Só pra exemplificar total_votos = sum(votos.values_list('quant_votos', flat=True)) context = { 'enquete': enquete, 'alternativas': alternativas, 'total_votos': total_votos } return render(request, 'resultado_enquete.html', context) Meu template de forma resumida {{ enquete.enquete_texto }} {% for alternativa in alternativas %} <p>{{ alternativa.nome_alternativa }} - Votos: {{ total_votos }}</p> {% endfor %} -
better way to query objects base on category in django
which way is more efficient? query products base on category in different view and template than the product list is OR query products base on category in the same product list view and template like domainname.com/products?category="cat slug" -
Django form widget: How can I set max value to a value on the database for each item?
class CustomerOrderForm(ModelForm): quantity = forms.IntegerField(widget=forms.TextInput(attrs={'min':0,'max':,'value':0,'type':'number','style':'max-width: 3em'})) class Meta: model = Cart fields = ('__all__') Each item has its own purchasing limits so I want to go to the database and get the purchasing limit for that item and set that as the 'max'. How can do I do it on django forms? I know for html, it's like this, but I have a dynamic value that I need to get from the DB: label for="zip_code">Zip Code:</label> <input type="text" id="zip_code" name="zip_code" placeholder="Five digit zip code" pattern="[0-9]{5}" maxlength="5" required> -
Sudden AWS ECS PermissionError for Django Collectstatic Command
I have an AWS ECS Task that runs a Django (Python) app and a Proxy for static files. Django has a command called collectstatic that copies all the static files into the shared folder that will be served by the proxy. I have been running this setup for a few months without any problems, but around 17 March 2021 I noticed that my deployment was not updating my website. Looking at my Django app logs I saw the error: PermissionError: [Errno 13] Permission denied: '/vol/web/static' I didn't make any configuration changes recently and after a week of experimentation, debug and frustration I noticed that a few other people from the same course that I followed to create this setup started having the exact same issue at the same time (basically a week ago). At this time my only guess would be that something must have changed within AWS itself, but I'm not sure what to look for. Any suggestions will be appreciated, thanks! -
Django - why am i not authenticated after logging in from Axios/AJAX?
I'm building a separated VueJS/Django app where Django will communicate with the Vue frontend using JSON. In order to be able to use the standard session authentication and django-allauth i will deploy the two apps on the same server and on the same port. Here is my problem: after i log in from the Vue app using Axios, i don't receive any response but i notice that a session is created on the db, so i'm assuming that i'm getting logged in. But if i try to reach and endpoint that prints request.user.is_authenticatedi get False, and request.user returns Anonymous, so i'm not logged in anymore. How can i solve this? Here is my Axios code: bodyFormData.append('login', 'root'); bodyFormData.append('password', 'test'); axios({ method: "post", url: "http://127.0.0.1:8000/accounts/login/", data: bodyFormData, withCredentials: true, headers: { "Content-Type": "application/json" }, }) .then(function (response) { //handle success console.log(response); }) .catch(function (response) { //handle error console.log(response); }); I think Django-Allauth supports AJAX authentication on its urls, but i don't understand how to make it return something and how can my Vue app stay authenticated once i submit the Axios form. Any advice is welcome! -
Django extra-views: Is there any way to control how they are displayed?
I want every form in a formset to be one bellow another and maybe to add some extra classes and display those images, but I don't have any idea how to do that. They are displayed like this: I have tried to do something like this in my template but there is an validation error occurring (MaganementForm is missing). {% for formset in inlines %} {% for f in formset%} {{f}} <br> {% endfor %} <hr> {% endfor %} -
Django app: Heroku app crashes after switching to daphne
I'm adding a page for instant chat messaging to my heroku app. It is working on my local web server, but when i push to heroku, my app crashes and I get this error: django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet. I've tried many solutions proposed on similar stackoverflow questions, but none of them work. It seems that it likely has to do with my Settings.py, Procfile or asgi.py files. asgi.py # mysite/asgi.py import os import django from channels.auth import AuthMiddlewareStack from channels.routing import ProtocolTypeRouter, URLRouter, get_default_application from django.core.asgi import get_asgi_application import chat.routing os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings") django.setup() # startapp = get_default_application() #todo: confirm why app doesn't crash if this is commented out... this is called from Procfile application = ProtocolTypeRouter({ # "http": get_asgi_application(), # TODO: CONFIRM http vs https "websocket": AuthMiddlewareStack( URLRouter( chat.routing.websocket_urlpatterns ) ), }) Procfile release: python manage.py migrate web: daphne django_project.asgi:application --port $PORT --bind 0.0.0.0 -v2 worker: python3 manage.py runworker channel_layer -v2 settings.py import django from django.core.wsgi import get_wsgi_application import os import django_heroku # setup(needed for daphne) SECRET_KEY = 'seckey...' #todo: test removing this in own deployment os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings") # application = get_wsgi_application() # SECURITY WARNING: keep the secret key used in production secret! #SECRET_KEY = os.environ.get('SECRET_KEY') # SECURITY WARNING: … -
Django boolean annotate returning duplicates
I have the following models: class Institution(models.Model): pass class Headquarter(models.Model): institution = models.ForeignKey(Institution, related_name='headquarters') class Audit(models.Model): headquarter = models.ForeignKey(Headquarter, related_name='audits') And the following query (basically, if an institution has at least one audit then has_visits must be true: Institution.objects.annotate( has_visits=models.Case( models.When(headquarters__audits=None, then=False), default=True, output_field=models.BooleanField() ) ) The problem is that if an institution has 2 audits then the queryset returns duplicate rows. I imagine it has something to do with the joins at the SQL level but I'm not sure how to correct it. I found this answer but I don't think OuterRef is what I'm looking for in my situation. What's the right way to accomplish this? -
Django staticfiles of app does not copying in production after manage.py collectstatic
I'm using Django + Nginx + uwsgi Settings.py : INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'main', ] if DEBUG: STATIC_ROOT = os.path.join(BASE_DIR, "static/") else: STATIC_ROOT = "/var/www/mysite/static/" STATIC_URL = '/static/' if DEBUG: MEDIA_ROOT = os.path.join(BASE_DIR, "media/") else: MEDIA_ROOT = "/var/www/mysite/media/" MEDIA_URL = '/media/' STATICFILES_FINDERS = [ 'django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder', ] After update a code (in DEBUG = True all works good, static files are loading correct) I'm using python manage.py collectstatic on DEBUG = False in production server and it's collect admin static, but it's not collecting static for "main" app. In debug mode all working good. Checked serving by Nginx - it's working correct. Why "collectstatic" doesn't collect static from "main" app? -
How to remove put method in RetrieveUpdateAPIView from drf-spectacular API documentation?
I have the following view: class PersonalInfos(generics.RetrieveUpdateAPIView): serializer_class = ClientSerializer permission_classes = [IsAuthenticated] def get_queryset(self): """ :return: A QuerySet Object """ return Client.objects.get(user=self.request.user) def get(self, *args): """ :param args: Handled by rest_framework views.dispatch :return: JSON object containing User Personal Data """ queryset = self.get_queryset() serializer = ClientSerializer(queryset) return Response(data=serializer.data) def patch(self, request): """ :param request: request object is sent by the client :return: Json response with the data sent of the body """ client = self.get_queryset() serializer = ClientSerializer(client, data=request.data, partial=True) if serializer.is_valid(): serializer.save() return Response(data=serializer.data, status=200) return Response(data="Unexpected Parameters", status=400) Everything works fine in the view, but the problem is that I am using drf-spectacular and it is showing me a PUT method in the documentation that we won't be needing in the API. My questions is, how can I customize drf-spectacular to not include a PUT method in the documentation? -
How can I perform a parse and edit function on an article when it's saved?
For a Django blog, I'm trying to find a way to parse the content of an article and automatically make edits when certain conditionals are met, then save the article to the db once the function is complete. Alternatively, I could do this from the view, but I figure it's more efficient and possibly easier to code if it's handled this way. What do I need to edit so I can pass this function when an article is saved? How can I parse the contents of the article and make changes when a conditional is met? Would something like the following work (pseudocode): ''' for line in object.content: line = line.rstrip() conditional: line = 'new line' object.content.save() ''' Sorry, not sure why codeblock isn't working. -
Django PWA - Session variables not updating
I am trying to convert a web application into a PWA using a service worker. I am using django session variables within the application for 'cart' functionality. As I add items to the cart session variable, it isn't getting updated while a service worker is running. I assume this is because of the caching. Is there anyway I can prevent this? the service worker being used (not my own): const PRECACHE = 'precache-v1'; const RUNTIME = 'runtime'; // A list of local resources we always want to be cached. const PRECACHE_URLS = [ '/home', '/base', '/menu' ]; // The install handler takes care of precaching the resources we always need. self.addEventListener('install', event => { event.waitUntil( caches.open(PRECACHE) .then(cache => cache.addAll(PRECACHE_URLS)) .then(self.skipWaiting()) ); }); // The activate handler takes care of cleaning up old caches. self.addEventListener('activate', event => { const currentCaches = [PRECACHE, RUNTIME]; event.waitUntil( caches.keys().then(cacheNames => { return cacheNames.filter(cacheName => !currentCaches.includes(cacheName)); }).then(cachesToDelete => { return Promise.all(cachesToDelete.map(cacheToDelete => { return caches.delete(cacheToDelete); })); }).then(() => self.clients.claim()) ); }); // The fetch handler serves responses for same-origin resources from a cache. // If no response is found, it populates the runtime cache with the response // from the network before returning it to the … -
How to include an argument while requesting for api in django?
I am trying to fatch live cricket score from sportsmonk cricket api and cricapi. using Django everything goes fine until I request for any endpoint with unique Id which is stored in a variable. sdd I gives key error always while doing so my request : resL = json.loads(requests.get( 'https://cricket.sportmonks.com/api/v2.0/fixtures/id?api_token').text) here 'id' is a variable for perticular fixture. It works fine while putting any numerical value instead of a variable. Same is the case with this url : resS = json.loads(requests.get('http://cricapi.com/api/fantasySummary/?apikey=123&unique_id=id).text) I not getting what I am doing wrong here. -
Django Rest Framework filter a calculated SerializerMethodField() in ViewSet using filterset_fields
I have a SerializerMethodField that calculates the next execution date adding hours to the last execution time Simplifying the code, a have this model: class Activity(BaseModel): name = models.CharField(max_length=250) last_execution = models.DateTimeField() def __str__(self): return self.name class Meta: ordering = ('name',) And to send to front-end the next excution time, I have this SerializerMethodField() in my Serializer class ActivitySerializer(serializers.ModelSerializer): next_execution = serializers.SerializerMethodField('get_next_execution') class Meta: model = Activity fields = ('id', 'name', 'last_execution', 'next_execution',) def get_next_execution(self, data): # last = ActivityExecute.objects.filter(activity_id=data.id).order_by('-executed_at').first() # time = data.periodicity_type.time_in_hour # if last: # if data.equipment.hour_meter > -1: # return last.executed_at + timedelta(hours=time - (data.equipment.hour_meter - last.hour_meter)) # return last.executed_at + timedelta(hours=time) # # return data.equipment.created_at + timedelta(hours=time) return data.last_execution + timedelta(hours=24) But when I try to add the calculated field to filterset_fields like this: class ActivityViewSet(viewsets.ModelViewSet): permission_classes = (IsAuthenticated,) serializer_class = ActivitySerializer filter_backends = (filters.DjangoFilterBackend,) filterset_fields = { 'id': ['exact'], 'name': ['icontains', 'exact'], 'last_execution': ['exact'], 'next_execution': ['exact'], } def get_object(self): return super(ActivityViewSet, self).get_object() def get_queryset(self): return Activity.objects.all() I got this error: 'Meta.fields' must not contain non-model field names: next_execution There is a way to add the SerializerMethodField() to filterset_fields? Use the method get_queryset will make all my logic in that calculated field (commented) be duplicated. … -
javascript function doesnt work on other objects
I have a strange problem and I'm not sure what might be the problem. As you can see from the image, on click (...) dots another menu is showing up, however, this works only for the first card. The menu is not showing up on the other cards. Any help is appreciated. JS: // Profile Edit Profile Button - POST let cardEdit = document.getElementById('container-posts-card-edit'); cardEdit.addEventListener('click',function(){ let cardOP = document.getElementById('card-edit-options'); if(cardOP.style.display === "none"){ cardOP.style.display = "flex" }else{ cardOP.style.display = "none" } }) django card model: {% if user.post_author.all %} {% for post in user.post_author.all %} <div class="container-posts-card"> <img src = "{{ post.image.url}}" class = "container-post-card-img">s <p class = "container-post-card-caption">{{ post.title }}</p> <div id="container-posts-card-edit"> <span class = "ellipsis-edit"><i class="fas fa-ellipsis-v"></i></span> </div> <div id="card-edit-options"> <a href= "{% url 'update_post' pk=post.pk %}" >Edit</a> <a href= "{% url 'delete_post' pk=post.pk %}" >Delete</a> </div> </div> {% endfor %} {% endif %} -
Not using Promise returned by fetch()
Is (3) a correct way of using then()? I don't need the Promise returned by fetch(), I just want obtain an updated array of emails once fetch() is done. Are my comments for (1) (2) and (3) correct? I tested them by running another then() after each of them, and they seem right. I just want to be sure. function setArchive(email_id, boolArchive) { fetch(`/emails/${email_id}`, { method: 'PUT', body: JSON.stringify({ archived: boolArchive }) }) ##### (Using just one of these at a time) (1) .then(load_mailbox('inbox')) // doesn't wait for fetch() to resolve, returned Promise accessible by the next then() (2) .then((response) => load_mailbox('inbox')) // waits for fetch(), returned Promise NOT accessible by the next then() (3) .then(() => load_mailbox('inbox')) // waits for fetch(), returned Promise NOT accessible by the next then() ##### .then(response => console.log(response)) // (2) and (3) logs 'undefined' Thanks for your help. -
Django with MongoDB without using ORM
I want to do CRUD app with authorization using DJango and MongoDB without using ORM. How can I implement this in my project and do it with some buttons on my page? Now im using DJongo but i wont using ORM. I have no idea how to do it. For example - after click button you will add or delete something to database without using ORM. -
How to clear cloned django form data before inserting to template
I have two forms. One modelform (static) and second modelformset (dynamic). I am trying to let users add an arbitrary number of addresses but I am struggling with cloning process. This code works fine. Adds and deletes addresses, but the thing is, whenever a new addressform gets created it contains all the data from the last. I want to clear cloned form before inserting it back to the template, but don't know how to achieve this. I don't have much experience with jquery and was unable to find any solution to my problem. Would greatly appreciate any help. <form id=forms method="post"> <div id="form"> {{ form.non_field_errors }} {% csrf_token %} <div class="row"> <div class="col-md-4"> {{ form.old_password|as_crispy_field }} </div> </div> <div class="row"> <div class="col-md-4"> {{ form.new_password1|as_crispy_field }} </div> </div> <div class="row"> <div class="col-md-4"> {{ form.new_password2|as_crispy_field }} </div> </div> <div class="row"> <div class="col-md-6"> {{ form.username |as_crispy_field }} </div> <div class="col-md-6"> {{ form.email |as_crispy_field }} </div> <div class="col-md-4"> {{ form.first_name |as_crispy_field }} </div> <div class="col-md-4"> {{ form.middle_name |as_crispy_field }} </div> <div class="col-md-4"> {{ form.last_name|as_crispy_field }} </div> <div class="col-md-4"> {{ form.company_name |as_crispy_field }} </div> <div class="col-md-4"> {{ form.personal_id|as_crispy_field }} </div> <div class="col-md-4"> {{ form.title |as_crispy_field }} </div> <div class="col-md-4"> {{ form.phone|as_crispy_field }} </div> {{ address_forms.management_form|crispy … -
How can i login from Axios/Ajax in Django?
I'm building a Vue SPA where Django will be the backend of the Vue app and will communicate with the frontend only usinsg JSON. I'm trying to handle authentication now, and i'm trying to login from the Vue app using Axios (i'm using the standard session authentication), the Django backend uses django-allauth, so basically the Vue app should send a POST request to accounts/login/ which is a Django-Allauth URL in my backend. The problem with my code is that when i send the request with Axios nothing happens, and instead of logging in the response will be HTML instead of a valid response, Django-Allauth supports AJAX calls so that should not be a problem. Here is my code: authenticate() { axios.post('http://127.0.0.1:8000/accounts/login/', { username: 'root', password: 'test', }, { headers: { 'Content-Type': 'application/json', 'X-CSRFTOKEN': this.csrf_token, }, }) .then(function (response) { console.log(response) }.bind(this)) }, The response is HTML, while this is what i see in the terminal: [23/Mar/2021 20:04:37] "POST /accounts/login/ HTTP/1.1" 200 1607. What am i doing wrong? -
Check whether int value of string is zero, positive or null in Python
I am saving the form data into a model instance. There are fields where the user can enter values from 0 and above or leave them empty. Now I should assign them to a field. Eg code def update(self, my_val): self.my_val = my_val or None This above code works fine for values of 1 and above. But not for 0. How can I allow for 0 and positive numbers and if my_val is an empty string then I should store it as None. How can I do that? -
Uploading a picture in django to a unique folder
I'm fairly new to Django and am having a bit of trouble trying to upload images So broadly, I have a user class: class User(AbstractBaseUser): user_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True) And a profile class: class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) photo = models.ImageField(upload_to=<PATH>, blank=True, default=get_default_profile_image) For the above PATH in profile, I tried to upload it to: 'profiles/' + user.user_id + '/image.png' But if I try to do that, it says "AttributeError: 'OneToOneField' object has no attribute 'user_id'" Is there any way to set the upload_to path as profiles/user_id/image.png where the user_id will be the unique id of that user? -
Error while running pip install -r requirements.txt , Could not find a version that satisfies the requirement django-filters==2.4.0
Here is the command line output that I have got when I tried installing my requirements.txt inside a virtual env. It seems that there is some error with the django-filters version, but not sure what! I am so stuck with this, please help me. Thanks! Using cached asgiref-3.2.7-py2.py3-none-any.whl (19 kB) Collecting Babel==2.8.0 Using cached Babel-2.8.0-py2.py3-none-any.whl (8.6 MB) Collecting dj-database-url==0.5.0 Using cached dj_database_url-0.5.0-py2.py3-none-any.whl (5.5 kB) Requirement already satisfied: Django==3.0.6 in e:\..\..\venv\lib\site-packages (from -r requirements.txt (line 4)) (3.0.6) Collecting django-crispy-forms==1.9.0 Using cached django_crispy_forms-1.9.0-py2.py3-none-any.whl (107 kB) ERROR: Could not find a version that satisfies the requirement django-filters==2.4.0 ERROR: No matching distribution found for django-filters==2.4.0 -
How do I add a filepath to a React project? (DRF)
I'm building a hybrid Django/DRF - React website. I'd like the react section to have a filepath as its only a part of the website (so .com/app instead of just .com/). Currently react renders correctly without the filepath, however when I add a subdomain to urls.py, index.html renders but without the components. React is in a django app, and the API is in another django app. This is the code with the filepath of 'app' added: src/components/App.js <Route path="app/join" component={RoomJoinPage} /> <Route path="app/info" component={Info} /> <Route path="app/create" component={CreateRoomPage} /> (react app) frontend urls.py from django.urls import path from .views import index app_name = 'frontend' urlpatterns = [ path('', index, name=''), path('info', index), path('join', index), django project urls.py django project urls.py from django.contrib import admin from django.urls import path, include from django.views.generic import TemplateView urlpatterns = [ path('admin/', admin.site.urls), path('api/', include('api.urls')), path('spotify/', include('spotify.urls')), path('app/', TemplateView.as_view(template_name='frontend/index.html')), path('main/', include('main.urls')), ]