Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django REST authentication not working with React
actually I want: if a user is authenticated: then create/get the Cart with user, else: create/get the Cart with session key. But at first problem happened with authentication. At first I tried to register the user and saved the key(got from drf) in local storage. in Reactjs: signupHandler=()=>{ fetch('http://127.0.0.1:8000/api/rest-auth/registration/', { method: 'POST', headers:{ 'content-type':'application/json', }, body:JSON.stringify({ 'username':this.state.username, 'email': this.state.email, 'password1': this.state.pass1, 'password2': this.state.pass2 }) }) .then((response)=>{ response.json().then((result)=>{ if (result.key !== undefined){ localStorage.setItem('login', JSON.stringify({login: true,token:result.key})) this.setState({registered: true}) } }) }) } I think no problem here. if I console.log() the key , it prints the key successfully. now look at my views.py . I think the problem is here. @api_view(['GET']) #@permission_classes((IsAuthenticated,))<<< if i comment out this line, and try to call this function, it shows >>>Forbidden: /addToCart/21/ def addToCart(request, pk): print(request.user)#>>>AnonymousUser product = get_object_or_404(Product, pk=pk) if request.user.is_authenticated: print('authenticated')#>>> nothing prints mycart, __ = Cart.objects.get_or_create(user=request.user) mycart.product.add(product) else: print('session')#>>>session if not request.session.exists(request.session.session_key): request.session.create() mycart, __ = Cart.objects.get_or_create(session_key=request.session.session_key) mycart.product.add(product) return Response({'response':'ok'}) now i made a button and if i click, this function call reactjs: addToCart=()=>{ var id = this.props.id let store = JSON.parse(localStorage.getItem('login')) console.log(store.token);//successfully print the key var url = 'http://127.0.0.1:8000/addToCart/'+id+'/' fetch(url,{ method:'GET', headers: { 'Content-Type': 'application/json', 'Authorization': 'Token '+store.token } }).then(res=>res.json().then(result=>{ if(result.response === … -
How to subscribe to a model in django channels rest framework?
I'm trying to subscribe for changes in a model using Django Channels Rest Framework. I've been following the example at https://djangochannelsrestframework.readthedocs.io/en/latest/examples/model_observer.html and at latest following question: How to subscribe to all instances of a model in django channels rest framework?. However, I'm not receiving updates via WebSockets when the models are updated. I'm having consumser set as below: # consumers.py from djangochannelsrestframework.consumers import AsyncAPIConsumer from djangochannelsrestframework.observer import model_observer from .models import User, Comment class ModelConsumerObserver(AsyncAPIConsumer): async def accept(self, **kwargs): print("WebSocket Connect 1") await super().accept() print("WebSocket Connect 2") await self.model_change.subscribe() print("WebSocket Connect 3") @model_observer(Comment) async def model_change(self, message, **kwargs): print("Model Observer 1") await self.send_json(message) print("Model Observer 2") I'm trying to subscribe for Comment-model as in the example in documentation. However, I'm not receiving the updates on model. On my side there is currently no authentication, no exception on server. The local server console shows: System check identified no issues (0 silenced). June 06, 2021 - 10:11:10 Django version 3.2.3, using settings 'websocket.settings' Starting ASGI/Channels version 3.0.3 development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C. HTTP GET / 200 [0.01, 127.0.0.1:64527] WebSocket HANDSHAKING /ws/my-consumer/ [127.0.0.1:64528] WebSocket Connect 1 WebSocket CONNECT /ws/my-consumer/ [127.0.0.1:64528] WebSocket Connect 2 WebSocket Connect 3 I'm not sure, … -
Uncaught (in promise) SyntaxError: Unexpected end of JSON input for JSON data processing received form Django backend
I have used Django to develop a web app. When I tried to receive and process the JSON data sent from backend, error occurs: Uncaught (in promise) SyntaxError: Unexpected end of JSON input at Function.parse [as parseJSON] (<anonymous>) view.py: @csrf_exempt def content_checklist_name_url(request): msg = "Duplicate Entry. This Course Code already exists." json_data = {'msg': msg} return JsonResponse(json_data) Javascript: const response = await fetch({% url 'bms:content_checklist_name_url' %}); var msg_json = jQuery.parseJSON("{{json_data}}"); console.log(msg_json.toString()); if (msg_json === "Duplicate Entry. This Course Code already exists.") ... -
Django website can't find template in new project website
Hey I'm looking for some advice on my situation as I can't seem to figure this out. I'm trying to build a website with Django following along with the tutorial they have on the webpage and I got stuck at a step where I want to add a view to my web page. My folder structure is so fart like this: PersonalWebsite | |--PersonalWebsite | |--urls.py |--dashboard | |--urls.py |=-views.py |--templates |--dashboard | |--index.html In my PersonalWebsite/urls.py I have : urlpatterns = [ path('admin/', admin.site.urls), path('', include('dashboard.urls')), path('resume/', include('resume.urls')), ] In my dashboard/urls.py I have: urlpatterns = [ path('', views.index, name='index'), ] And in my dashboard/view.py I have: def index(request): return render(request, 'dashboard/index.html') Then I have just some html in the index.html. I'm trying to basically have the dashboard app as the landing page of the website and from there I want to redirect to other apps like portofolio, articles, etc. My issue is that now I get a TemplateNotFound error when the website tries to access dashboard/index.html at localhost:8000/ address. I haven't changed anything in the settings files, it is a standard project. Any idea's why it can't find the index.html? -
FileNotFoundError in Docker django project even though the file is present
I had created a django project and it was working correctly. Then I dockerised the project. Now I an getting this file not found error even though the file is present at the address. It is a normal text file which the views.py file needs to access. -
How to access fields of a Model from ForeignKey for Validation?
Basic idea is Task --> Submission means each submission is associated with a Task with ForeignKey. This is my models.py file from django.db import models from django.core.validators import FileExtensionValidator class Task(models.Model): task = models.CharField(max_length=20) min_marks = models.IntegerField(default=0) max_marks = models.IntegerField(default=100) late_submission_date = models.DateField() late_submission_panalty = models.IntegerField() file_type = models.CharField(max_length=10) file_size = models.IntegerField("File Size in mb") created_date = models.DateTimeField(auto_now_add=True) def __str__(self): return f"Task:{self.task}" class Submission(models.Model): task = models.ForeignKey(Task, on_delete=models.CASCADE) team_id = models.IntegerField(unique=True) file = models.FileField("File", validators=[FileExtensionValidator(allowed_extensions=['zip'])]) # see here created_date = models.DateTimeField(auto_now_add=True) def __str__(self): return f"{self.team_id}@{self.created_date.strftime('%H:%M_%d_%m_%Y')}" Inside Submissions --> file i want to access file_type of task so i could validate submission file extension. I am really new to Django so any help would be nice. -
IntegrityError at /users/signup NOT NULL constraint failed: users_user.username
What I was doing I was making the signup form with using ModelForm in forms.py and FormView in views.py. I am making users to use their email as their username when they are logging in so that they can easily set new passwords if they lost. Error Image It just threw IntegrityError in my console. IntegrityError at / NOT NULL contraint failed What I have tried to solve issue I deleted all the migration files and db file so that there won't be any duplicated users in my database. And then I created new superuser and then created new user. I got rid of email field in fields in Meta class and then created cleaning method of email (def clean_email(self):). However this solution didn't work obviously because it will delete the email field in my signup form. Source code Below are my all source codes that might be related to this topic. templates/users/signup.html {% block content %} <section id="signup"> <form method="POST", action="{% url 'users:signup' %}"> {% csrf_token %} {{ form.as_p }} <button type="submit">Signup</button> </form> </section> {% endblock content %} users/forms.py class SignupForm(forms.ModelForm): class Meta: model = models.User fields = ['first_name', 'last_name', 'email'] password = forms.CharField(widget=forms.PasswordInput) confirm_password = forms.CharField(widget=forms.PasswordInput, label='Confirm Password') … -
Daphne showing blank screen on browser with Django ASGI, unable to load static files. Why?
When I run the server using :- python manage.py runserver everything is working correctly, but for the hosting purpose I have to run it with daphne which is not working correctly. Its not giving any error but showing blank screen because it is not loading static files even though I have specified STATIC_URL and STATICFILES_DIRS in settings. asgi.py settings.py command view browser showing blank screen Help me fixing it, its been so long I am searching for the solution but unable to figure out any. if anything else required in question comment me, I will re-edit for the same. -
How to create a url for each object in django rest?
I have a Jason file. I want to create a url for each object with django rest. How do I do that? example json: [{"name":"John","age":30,},{"name":"ali","age":44,},] -
How to fix errors when trying to run a server using django?
I'm trying to learn how to use Django and I have created a folder called "lecture3" and when I type in lecture3 % python manage.py runserver, I get the error lecture3 : The term 'lecture3' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1 lecture3 % python manage.py runserver ~~ CategoryInfo : ObjectNotFound: (lecture3:St ring) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException -
Django: How to call the same model class inside it s self?
I have a function make_fields_permissions that I need to use it inside the model calss in order to parse the fields and to make permissions for each field like [('can_view_first_name_field','can view first name'),...] goal I need to call and override Person class and inside it self I tried def __init__(self,*args, **kwargs): self.Meta.permissions = make_fields_permissions(self.model) super().__init__(*args, **kwargs) from django.db import models class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) def __init__(self, *args, **kwargs): # kwargs['user']['permissions'] = make_fields_permissions(Profile) # x = self['age'] super().__init__(*args, **kwargs) class Meta: permissions = make_fields_permissions(Person) #< I can't use the same model inside meta -
How can I use prefetch_related to get the name field of objects with ForeignKey relationships?
I have two models: class ModelA(models.Model): name = models.CharField() class ModelB(models.Model): A = models.ForeignKey(ModelA, related_name="links") name = models.CharField() In my template I would like to print out the 'name' of each object associated to each ModelA object via ForeignKey, I am doing so like this {% for a in modela_list %} <p>{{ a.name }} </p> {% for link in modela_list.links.all % } <p>Link name: {{ link.name }} </p> {% endfor %} {% endfor %} While this does work, from what I understand it is incredibly inefficient, and very slow. How can I use prefetch_related to make this better? -
TypeError: contact() got an unexpected keyword argument 'name' -why I get such error in django?
Hello I am learning django framework for web development. After makemigrations and migrate command I did runserver command hence I got the following error. File "D:\learn django\ashokWeb\portfolio\home\views.py", line 21, in contact ins=contact(name=name,email=email,phone=phone,desc=desc) TypeError: contact() got an unexpected keyword argument 'name' [06/Jun/2021 15:08:25] "POST /contact HTTP/1.1" 500 64573 from django.shortcuts import render from home.models import contact # Create your views here. def home(request): return render(request, 'home.html') def about(request): return render(request, 'about.html') def projects(request): return render(request, 'projects.html') def contact(request): if request.method=="POST": name=request.POST['name'] email=request.POST['email'] phone=request.POST['phone'] desc=request.POST['desc'] #print(name,email,phone,desc) ins=contact(name=name,email=email,phone=phone,desc=desc) ins.save() print('the deta has been written to the db') return render(request, 'contact.html') '''models.py file''' from django.db import models # Create your models here. class contact(models.Model): name = models.CharField(max_length=30) email = models.EmailField(max_length=50, null='True') phone = models.CharField(max_length=10) desc = models.TextField() -
Django looping through 10 items of an array each time a button is pressed
I would like a page to start by showing 10 items, once a button is clicked, the next 10 items are shown and so on. Pressing the back button will show the previous 10 items. How would I got about doing this? The items are in an array. Each item is a queryset. Current code: {% for item in items %} #format item to be shown {% endfor %} -
Writing DRF reusable APIs
I am trying to create a PIP package for a set of reusable APIs. I have already implemented those API in a project and are working perfectly fine. I started looking for the way to package these API so that it can be integrated with any other project and that is how I learned about setuptools. To gain a little hands on experience with setuptools I simply created a PIP package for a helloworld() program. Now, I have started creating the package for the API I have in my DRF app. I created an empty directory and moved all the modules of this DRF app into that directory. The setup.py file is well configured to install the dependencies which are required by these modules. However, now I want to start this application and see if it is working or not. So when I run python manage.py runserver it didn't work because of an obvious reason - No such file or directory. Moreover, there are certain configuration which are required for this package to work and in my previous project it is defined in settings.py file. setup.py import os from setuptools import setup, find_packages # allow setup.py to be run from … -
how to return to a precise position in a django template
I have an html table where I can modify the cell fields, since the table is a bit long; when i commit the change i want to go back to the last modified line. i am using django. is there a solution for that. ps: I am using this code for page loading: return render(request, "./ui-panneaux-gerer-prix-form.html", context) and this is the table row : <td> <div class="row mb-5 mb-lg-5"> <div class="col-lg-3 col-sm-6 mt-4 mt-md-0"> <form action="gerer-prix-operation" method="POST"> {% csrf_token %} <fieldset> <legend class="h6">Matiere de fonds</legend> {% for objet_list in produit_list_fond %} <div class="form-check"> <input class="form-check-input" type="radio" name="matiereFond" id="exampleRadios2" value="{{objet_list.id}}" > <label class="form-check-label" for="exampleRadios2"> {{objet_list.nom}} </label> </div> {% endfor %} </div> <div class="col-lg-3 col-sm-6 mt-4 mt-md-0"> <legend class="h6">Champs</legend> {% for objet_list in produit_list_contour %} <div class="form-check"> <input class="form-check-input" type="radio" name="matiereContour" id="exampleRadios2" value="{{objet_list.id}}" > <label class="form-check-label" for="exampleRadios2"> {{objet_list.nom}} </label> </div> {% endfor %} </div> <div class="col-lg-3 col-sm-6 mt-4 mt-md-0"> <legend class="h6">Autre</legend> {% for objet_list in produit_list_autre %} <div class="form-check"> <input class="form-check-input" type="radio" name="autreMatiere" id="exampleRadios2" value="{{objet_list.id}}" > <label class="form-check-label" for="exampleRadios2"> {{objet_list.nom}} </label> </div> {% endfor %} <div class="form-check"> <input type="hidden" name="id" value="{{panneaux.id}}"> </div> <div class="form-check"> <input type="hidden" name="idObjetPanneaux" value="{{objet_panneaux.id}}"> </div> <div id="test"> </div> <button id="gerer_surface" class="btn btn-sm btn-danger" type="submit">Valider</button> <!-- End of Radio … -
Filtering Django admin site by user group
i want to filter the objects displayed on the admin site by using user groups. Each user is assigned to one or more groups which represent different categories of articles. Each article falls into one or more categories (the names of the groups and categories are identical). On the admin site for the Article object, users shall only see articles from categories of which they are a member. I found a basic approach by overriding get_queryset within ModelAdmin and retrieving a list with the user's group names. But how can i reference the ArticleCategory model within ArticleAdmin to do the comparison with the group names? models.py class Article(models.Model): title = models.CharField(max_length=200, default=None) class Category(models.Model): name = models.CharField(max_length=50, default=None) class ArticleCategory(models.Model): article = models.ForeignKey(Article, on_delete=models.CASCADE, default=None) category = models.ForeignKey(Category, on_delete=models.CASCADE, default=None) admin.py class ArticleAdmin(admin.ModelAdmin): model = Article def get_queryset(self, request): if request.user.is_superuser: queryset = Article.objects.all() else: try: l = request.user.groups.values_list('name',flat = True) l_as_list = list(l) queryset = Article.objects.filter(??? in l_as_list) except: queryset = Article.objects.none() return queryset admin.site.register(Article, ArticleAdmin) -
Is there a way to make clickable images and select an that particular one?
I am working on a Graphical password authentication system using Django. During the registration process, I want to display few images , out of which the user can select any one. i want the selected image to be highlighted and also on the click of submit button, i want that image to be stored in the database. I had tried adding images in a button, but it did not work out. This is what i did <button name="b3" style="border:0px"><img src="/static/r9.jpg" class="d-block w-100" alt="..."></button> Then I tried a different approach and used use-maps in HTML. But apparently that also seems to not work. <img src="/static/r1.jpg" class="d-block w-100" name="img" alt="..." usemap="#imagemap"> the use map is defined as follows: <map name="imagemap"> <area shape="rect" coords="34,44,270,350" href=""> </map> Can you please guide me what is the way to go forward with it. Thanks in advance. -
I'm trying to link the post created by the specific user account in Django
models.py from django.db import models from django.contrib.auth.models import User # Create your models here. class Customer(models.Model): user = models.OneToOneField(User,null=True,blank=True,on_delete=models.CASCADE) name = models.CharField(max_length=200,null=True) ## phone = models.IntegerField(null=True) email = models.EmailField(max_length=250) profile_pic = models.ImageField(default='default_pic.png',null=True,blank=True) date_created = models.DateTimeField(auto_now_add=True,null=True) def __str__(self): return self.name class Task(models.Model): customer = models.ForeignKey(Customer,on_delete=models.CASCADE,null=True) title = models.CharField(max_length=200) description = models.TextField(null=True,blank=True) complete = models.BooleanField(default=False) created = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title class Meta: ordering = ['complete'] views.py @login_required(login_url='login') def taskCreate(request): if request.method == 'POST': form = TaskForm(request.POST or None) if form.is_valid(): form.instance.customer = request.user form.save() return redirect('tasks') else: form = TaskForm() context = {'form':form} return render(request,'todo_list/task_create.html',context) Error: ValueError at /create_task/ Cannot assign "<SimpleLazyObject: <User: Dominic>>": "Task.customer" must be a "Customer" instance. I am trying to link the username in the user account to be shown on the model Task.customer that represents the post is created by that user. May I ask any methods could be done in order to specify the customer in the model Task? Also I do not understand the error message in detail because my admin panel already has the current username in the Customer model. However if I used request.user.customer the username does not show up instead returning None so how to solve this issue? -
How to add password toggle functionality on a form extended from Django's built-in Authentication Form?
I am extending a form UserLoginForm from Django's built-in AuthenticationForm. I am passing this form to my login page. I want to add password toggle functionality to this. This is my UserLoginForm and this is my login page. But I want to add password functionality like this. I have tried 'data-toggle' attribute in my form but that didn't work. As I am extending from built-in form, I could not toggle functionality through "id" of the element. I am using Bootstrap5. Please let me know how do I add password toggle functionality in this case. -
What is similar to postgresql uuid DEFAULT uuid_generate_v4() in a Django Model?
What would be similar to the postgresql schema below in a Django model? The current model, when doing an insert into the database, gives the error null value in column "account_uuid" violates not-null constraint. When generating the table directly in postgresql the insert works fine. postgresql schema example: CREATE TABLE accounts ( account_uuid uuid DEFAULT uuid_generate_v4() ); django model attempt: import uuid from django.db import models class Account(models.Model): account_uuid = models.UUIDField( default=uuid.uuid4, editable=False) -
Intergrating Firebase Phone authentication and Django Backend
I have created a Django backend for my flutter app. I have used the Django rest framework to connect two. Now for user authentication, I am using firebase on my flutter application. It's working fine. Now since the user management is done by firebase, how can I add a user to my Django backend when the user signup through my app to firebase. I want firebase to handle the signup/sign-in process but also want to create a user profile on my Django server which contains information about the user's address, profile pic, orders, payment history etc. Also, I want Django to know if the user is authenticated with firebase while calling API requests. How can I make Django handle such requests? -
Can't change the name form which the email is being sent
Here is the code that I am using subject = 'Opinion - OTP for login' message = 'Your OTP to login is {}'.format(callbacktoken) email_from = 'Opinion@noreply.com' # email_from = settings.EMAIL_HOST_USER recipient_list = [email] send_mail(subject, message, email_from, recipient_list) I expect the email to show Opinion@noreply.com as the name but they still show my email id that is in settings.EMAIL_HOST_USER. How to solve this problem? -
Executing scripts on remote server as user
I have a django service that is running under sudo account. All the operations like job submission, database operations etc. are performed by sudo account. However there are certain scripts that should be executed as user for traceability purpose later on. What is the best way to transfer the user password so that it can be taken as input to a script that does su myid and subsequent commands in the script are run under userid. For example my server is running as sys_admin. The password mypassword should be given by the user from the webpage and passed onto the script as argument. Below is my sample script: su - myid <<! >/dev/null 2>&1 mypassword whoami > /dev/tty ! The above script will print myid and not sys_admin. What is the best and the most secure way to perform this operation so that password is not exposed to backend as well. Can some form of encryption and decryption be performed on client or server side with some passphrase? -
Wagtail : How do I query related names (inline models) of a child page?
I have two pages: ArticlePage and TimelinePage. TimelinePage has an inline panel which is related to the model TimelinePageEntry. TimelinePage displays all of it's child TimelinePageEntry(s) just fine. However when I try to get all the TimelinePageEntry(s) from ArticlePage, it fails with an exception. ArticlePage fails with an exception when I try to do: context['timeline_entries'] = timeline_page.timeline_entries.all() Here's the source code for the three classes in models.py: import datetime from django.db import models from modelcluster.fields import ParentalKey from wagtail.admin.edit_handlers import FieldPanel, InlinePanel from wagtail.core.fields import RichTextField from wagtail.core.models import Orderable from wagtail.core.models import Page class ArticlePage(Page): date = models.DateField("Creation date", default=datetime.date.today) hero_biography = RichTextField(blank=True) content_panels = Page.content_panels + [ FieldPanel('date'), FieldPanel('hero_biography'), ] subpage_types = [ 'articles.TimelinePage' ] def get_context(self, request, *args, **kwargs): context = super().get_context(request) timeline_pages = self.get_children().type(TimelinePage) timeline_page = timeline_pages[0] # prints "Page" print(type(timeline_page).__name__) # prints the title of the timeline page, so I know I'm getting a query result print(timeline_page.title) context['timeline_page'] = timeline_page # Throws an exception context['timeline_entries'] = timeline_page.timeline_entries.all() return context class TimelinePage(Page): max_count_per_parent = 1 subpage_types = [] content_panels = Page.content_panels + [ InlinePanel('timeline_entries', label="Timeline Entries") ] parent_page_type = [ 'articles.ArticlePage' ] def get_context(self, request, *args, **kwargs): # Prints "TimelinePage" print(type(self).__name__) # Prints a list of …