Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Best practices for extending Custom User Model in django
I have a Custom User model in my app class User(AbstractBaseUser, PermissionsMixin): uuid = models.UUIDField(default=uuid.uuid4, unique=True) email = models.EmailField(_('email address'), db_index=True, unique=True) and this AUTH_USER_MODEL = 'users.User' in my settings file. Now I want to create a model on the top of this custom user model(User), lets call it Agent, this model will have three columns: user_uuid #Foreign Key Refernce(OnetoOne) to the Custom User Model uuid # unique identifier for Agent model scope # CharField specific to Agent model What is the best way to do that? -
soup.find_all() returns empty dictionary
i have a code up here in my django and it is supposed to return all the resultRows class and it does not. It is not a problem with the module cause it returns 'a' tags, when asked alone. Here is the website im trying to access : https://ras-al-khaimah.locanto.ae/q/?query=computer . . Please someone help :) def new_search(request): search = request.POST.get('search') models.Search.objects.create(search=search) final_url = BASE_CRAIGSLIST_URL.format(quote_plus(search)) print(final_url) response = requests.get(final_url) data = response.text soup = BeautifulSoup(data,features='html.parser') post_titles = soup.find_all('a',{'class':'result-row'}) print(post_titles) stuff_for_frontend = { 'search':search, } return render(request,'my_app/new_search.html', stuff_for_frontend) -
Dynamically create Django settings variables
I have two settings files: settings_commons.py which holds the variables that are common for all instances settings_prod.py prod instance-specific vars settings_dev.py dev instance-specific vars I have multiple variables that set paths for logs, uploads and etc. These paths depend on MNT_DATA_DIR which is different for every instance (dev, prod, etc). I don't want to have these paths duplicated in every instance settings file. What I do in settings_commons.py MNT_DATA_DIR_DEPENDENT_VARS = ( ('FILE_DIR', os.path.join('{MNT_DATA_DIR}', "file_root")), ('LOG_DIR', os.path.join('{MNT_DATA_DIR}', "logs", "lab")), ... ) FILE_DIR_DEPENDENT_VARS = ( ('IMPORT_DATA_DIR', os.path.join('{FILE_DIR}', "Import")), ('REMOTE_DATA_DIR', '{FILE_DIR}'), ... ) And then in the instance-specific file from .settings_commons import * MNT_DATA_DIR = '/mnt/dir' for item in MNT_DATA_DIR_DEPENDENT_VARS: globals()[item[0]] = item[1].format(MNT_DATA_DIR=MNT_DATA_DIR) for item in FILE_DIR_DEPENDENT_VARS: globals()[item[0]] = item[1].format(FILE_DIR=FILE_DIR) Could this approach cause any problems? What about using setattr() instead of globals()? Is this the right approach? -
Django update database using edit form
I am a newbie to Django, and this is my first Django web-app. I have created a student management system where admin can add students. I have created a form at index page where student can enter their enrollment id and date of birth and will be redirected to a edit form page. Now I want to know that how to update the record with new values provided by user, I have no idea where to write the SQLite queries ( I have not changed any db setting and I red that Django uses SQLite db by default ) or how to handle the request. Any help would be appreciated. models.py class Student(models.Model): gender_choices = [('M', 'Male'), ('F', 'Female')] enrollment_no = models.CharField(max_length=10, primary_key=True, unique=True) first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) father_name = models.CharField(max_length=50) mother_name = models.CharField(max_length=50) address = models.CharField(max_length=200) dob = models.DateField('date of birth') gender = models.CharField(choices=gender_choices,max_length=1,default=None) def __str__(self): return (self.first_name +" "+ self.last_name) STUDENT LOGIN FORM (index.html page) <form action="{% url 'students:detail' %}" method="get"> <div class="form-group"> <label for="enrollmentid">Enrollment ID: </label> <input type="text" class="form-control" name="enrollmentid" id="enrollmentid" placeholder="Enter enrollment id" required> </div> <div class="form-group"> <label for="dob">Date of Birth: </label> <input type="text" class="form-control" name="dob" id="dob" placeholder="Enter dob (YYYY-MM-DD)" required> </div> <button class="btn … -
Django, form hidden based on conditional statement
I'm new in django. I have the following models.py class Prodotto(models.Model): name = models.CharField() class Sottoprodotto(models.Model): prodotto=models.ForeignKey(Prodotto) name = models.CharField() class Lavorazione(models.Model): codice_commessa=models.ForeignKey(Informazioni_Generali) numero_lavorazione=models.IntegerField() prodotto=models.ForeignKey(Prodotto) sottoprodotto=models.ForeignKey(Sottoprodotto) And my forms.py class LavorazioneForm(forms.ModelForm): class Meta: model = Lavorazione fields = "__all__" A "Prodotto" element could have a "Sottoprodotto" or not. I want to have the possibility in my form (created utilizing crispy) to hidden the Sottoprodotto's box when a Prodotto don't have a Sottoprodotto related. It's possible? -
Not able to use django-storages to fetch static files
I am trying to use django storages to fetch static files for Django admin. I am facing a strange behavior that I am not able to understand clearly. I am having two different buckets, one for static files and other for some other purpose. If I comment out the AWS_S3_CUSTOM_DOMAIN keep everything else as it is (the way it is posted below), everything works. But if I uncomment AWS_S3_CUSTOM_DOMAIN and override the custom domain in my storage backend StaticStorage, it starts giving me 403. I know that I am missing something, just not able to figure out what. settings.py S3_BUCKET = os.environ.get('S3_BUCKET') S3_FILE_LOCATION = os.environ.get('S3_FILE_LOCATION') AWS_ACCESS_KEY_ID = os.environ.get('S3_STORAGE_ACCESS_KEY_ID', '') AWS_SECRET_ACCESS_KEY = os.environ.get('S3_STORAGE_SECRET_ACCESS_KEY', '') AWS_STORAGE_BUCKET_NAME = os.environ.get('S3_BUCKET', '') AWS_S3_CUSTOM_DOMAIN = f"{os.environ.get('S3_BUCKET', '')}.s3.amazonaws.com" AWS_S3_OBJECT_PARAMETERS = { 'CacheControl': 'max-age=86400', } AWS_DEFAULT_ACL = None AWS_S3_VERIFY = False AWS_S3_USE_SSL = False # s3 static settings STATIC_FILE_BUCKET = os.environ.get('STATIC_FILE_BUCKET') STATIC_LOCATION = 'static' STATIC_S3_CUSTOM_DOMAIN = f"{os.environ.get('STATIC_FILE_BUCKET', '')}.s3.amazonaws.com" STATIC_URL = f'https://{STATIC_S3_CUSTOM_DOMAIN}/{STATIC_LOCATION}/' STATICFILES_STORAGE = 'apps.utils.storage_backends.StaticStorage' DEFAULT_FILE_STORAGE = 'apps.utils.storage_backends.PrivateMediaStorage' storage_backends.py class StaticStorage(S3Boto3Storage): location = 'workflow' default_acl = 'private' def __init__(self, *args, **kwargs): kwargs['bucket'] = settings.STATIC_FILE_BUCKET # self.custom_domain = settings.STATIC_S3_CUSTOM_DOMAIN super().__init__(*args, **kwargs) -
Multi settings in Django
I've created in my project settings folder, where I handle development and production. I've added an extra application in production file: INSTALLED_APPS += [ 'google_analytics'] Now I need to add re_path('djga/', include('google_analytics.urls')) to main urls.py. How i can add it when settings are in production mode? -
ValueError: The 'cover' attribute has no file associated with it
I uploaded image from admin panel and it get stored in media/img.I want to display posted image in my index.html but i get this ValueError: The 'cover' attribute has no file associated with it.I think I am making mistake in url or view ..I am new to django. app url.py urlpatterns = [ path('', views.PostList.as_view(), name='home'), path('<slug:slug>/', views.post_detail, name='post_detail'), ] project url.py urlpatterns = [ path("admin/", admin.site.urls), path("", include("blog.urls"), name="blog-urls"), path("summernote/", include("django_summernote.urls")), views.py class PostList(generic.ListView): queryset = Post.objects.filter(status=1).order_by('-created_on') template_name = 'index.html' paginate_by = 3 models.py class Post(models.Model): cover = models.ImageField(upload_to='image/', default='') title = models.CharField(max_length=200, unique=True) slug = models.SlugField(max_length=200, unique=True) author = models.ForeignKey( User, on_delete=models.CASCADE, related_name="blog_posts" ) updated_on = models.DateTimeField(auto_now=True) content = models.TextField() created_on = models.DateTimeField(auto_now_add=True) status = models.IntegerField(choices=STATUS, default=0) index.html <img src={{ post.cover.url }} alt="{{ post.title }}" width="160px" height="220px"> -
Django Query Sets - Finding Percentage between two QuerySets
I have got two query sets - >>> region_carrier_groupby_total = <QuerySet [{'region_carrier': 'tc2 - rc2', 'DID_Count': 2}, {'region_carrier': 'tc1 - rc1', 'DID_Count': 16}]> >>> region_carrier_groupby_available = <QuerySet [{'region_carrier': 'tc2 - rc2', 'DID_Count': 1}, {'region_carrier': 'tc1 - rc1', 'DID_Count': 14}]> The objective here is to find the available percentage grouped by region_carrier for DID counts. For instance - region_carrier : tc1-rc1, Percent DID_Count = (14/16)*100 region_carrier : tc2 - rc2, Percent DID_Count = (1/2)*100 -
Django use a column as keys another as values and return dictionary
In Django I have a table within a model like: key value a 1 a 2 a 3 b 4 b 5 I would like to return: {'a': [1, 2, 3], 'b': [4, 5]} or: [{'key': 'a', 'values': [1, 2, 3]}, {'key': 'b', 'values': [4, 5]}] This can be done in Python easily by just iterating through all entries of the table. But since I discovered Aggregation | Django documentation | Django, I wonder if this can be done in Django directly, without writing Python loops? -
How to skip or remove password field in simplejwt token authentication in django rest framework?
My requirement is, I don't wanted to enter password in simplejwt token authentication. I have added one extra field in the authentication by inheriting the init() method of TokenObtainPairSerializer as per my requrements. Currently, I am passing None as in password field but still its showing to user (djnago admin portal). What I want is, I don't wanted to show the password field to user while authentication using simplejwt. below is my code, class CustomSerializer(TokenObtainPairSerializer): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields[self.username_field] = serializers.CharField() self.fields['password'] = PasswordField(default=None) self.fields['extra'] = serializers.CharField() def validate(self, attrs): pass Is there any ways to set PasswordField as unusable so it wont show to user? -
Django - How to pass varibale to Mixin
Let's say I have the following function-based view, where I pass the argument fofname to the view: def illiquid_reporting(request, fofname): ... If I want to make a class-based view out of it, is the below way the correct method to pass the argument: class IlliquidReporting(TemplateView) def get_context_data(self, fofname **kwargs): context = super().get_context_data(**kwargs) ... -
nginx.conf settting for django
On my ubuntu server i would setting nginx.conf for work with my django app I setup che nginx.conf file like this: user root; worker_processes auto; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; # Load dynamic modules. See /usr/share/nginx/README.dynamic. include /usr/share/nginx/modules/*.conf; events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; # Load modular configuration files from the /etc/nginx/conf.d directory. # See http://nginx.org/en/docs/ngx_core_module.html#include # for more information. include /etc/nginx/conf.d/*.conf; index index.html index.htm; server { listen 80 default_server; listen [::]:80 default_server; server_name 34.233.212.246; root /usr/share/nginx/html; #root /home/ec2-user/carrera/podium/static; # Load configuration files for the default server block. include /etc/nginx/default.d/*.conf; location / { proxy_pass http://127.0.0.1:8000; #proxy_set_header X-Forwarded-Host $server_name; #proxy_set_header X-Real-IP $remote_addr; add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"'; add_header P3P 'policyref="/w3c/p3p.xml", CP="IDC DSP COR ADM DEVi TAIi PSA PSD $ } # redirect server error pages to the static page /40x.html # error_page 404 /404.html; location = /40x.html { } # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { } } … -
How to create dynamic route for file paths in flask app
In my application I have a file browser. The file names are urls for a detail page, wich takes as argument the bucket and the object name. @app.route("/object_info/<string:bucket_name>/<string:object_name>/", methods=["POST", "GET"]) def object_info(bucket_name, object_name): Like this: http://localhost:5000/bucket_name/Grain_08.tif/ This is working fine, but I cannot display the files in subfolders like in 1aaaa, because if I click to the 2. row the url is: http://localhost:5000/bucket_name/1aaaa/Grain_11.tif and so the url pattern for the object_info route is not working. I have tried solutions like optional routes, but the depth of the subfolders are not limited. Thats mean there can be a file in 4 subfolders. So I need some dynamic stuff so I can display the objects in the deeper folders. -
Is there something called quote_plus from request.compat?
I;m trying to import request.compat.quote_plus but they say cannot find reference in compat.pyi. Is there a fix to this? -
Django/Python3: Convert complex inner join query to
I am developing a book sales application on Django and I need to get a list of the most popular book categories from the books sold. Models: Category (id, name) BookCategory (id, category[FK], book[FK]) Sales(id, book[FK]) Book(id, name) The following SQL is the equivalent of my requirement but I have no idea how to use this using Django models and filtering. sql = "SELECT c.* FROM category c INNER JOIN book_category bc ON c.id = bc.category_id INNER JOIN sales s ON s.book_id = bc.book_id GROUP BY c.id ORDER BY count(s.id) DESC" I have used the following lines of code to execute this but get an error. categories = Category.objects.raw(sql) Object of type 'RawQuerySet' is not JSON serializable How can I accomplish this? -
Can't access /admin in Django in AWS EC2
I deployed my project in AWS EC2 instance, but I can't access the admin site, on going to /admin URL, it gives 404 Error. -
How do I get an AJAX callback function to render a Django url or html template with parameters?
I am a beginner and working on an app where I want to redirect the user to a checkout-basket (Django url via POST? Or render html template with variables?) after checking if anything is saved in localStorage. So I check that and use AJAX to send that data to my Django url in order to render that template passing on the variables in localStorage as JSON. But return render(request, "pizza/prebasket.html", context) in views.py doesn't work: even though the data is recieved, prebasket.html is not rendered. I read that that's because AJAX doesn't allow that and instead I need to post through AJAX's callback function. But how do I do that via POST and how do I pass on the parameters to my view or directly to my html template? (window.location.href only handles GET requests, so I guess that doesn't work). Here's my JavaScript and my views.py: function previous_selection () { if (localStorage.getItem("preselection") != null) { const data = new FormData(); data.append("preselection", preselection); const request = new XMLHttpRequest(); request.open('POST', '/prebasket'); const csrftoken = getCookie('csrftoken'); request.setRequestHeader("X-CSRFToken", csrftoken); console.log("DATA IS: ", data); request.send(data); console.log("PRESELECTION IS: ", preselection); request.onload = () => { // HOW DO I CALL MY URL WITH PARAMETERS HERE? }; … -
How can I fetch data from other's app forms Django
Well I am making a Chat type web app in which user enters a name to start . I want to showcase that name whenever user sends a message . Both are different apps. So how can I fetch name that user enter to showcase whenever he sends message -
how can i see django database that is storing values on its own from site server?
I am trying to store the questions tag in sqlite3 of Django but whenever I am trying to click on Question in /admin/ it shows error : error image in case image is not displayed, this is error { OperationalError at /admin/userinfo/question/ no such table: userinfo_question Request Method: GET Request URL: http://127.0.0.1:8000/admin/userinfo/question/ Django Version: 3.0.5 Exception Type: OperationalError Exception Value: no such table: userinfo_question } I have already tried changing sqlite3 path in settings (error not resolved same error) python manage.py migrate --run-syncdb (migrations apply error not resolved) this was written while doing migrations Creating tables... Running deferred SQL... so I am thinking that the table is creating but not displaying( might be) this is my models.py ''' from django.db import models # Create your models here. class Question(models.Model): prob_link = models.CharField(max_length=500, default='') prob_level = models.CharField(max_length=1) prob_rating = models.IntegerField() expression_parsing = models.BooleanField(default=False) fft = models.BooleanField(default=False) two_pointers = models.BooleanField(default=False) binary_search = models.BooleanField(default=False) dsu = models.BooleanField(default=False) strings = models.BooleanField(default=False) number_theory = models.BooleanField(default=False) data_structures = models.BooleanField(default=False) hashing = models.BooleanField(default=False) shortest_paths = models.BooleanField(default=False) matrices = models.BooleanField(default=False) string_suffix_structures = models.BooleanField(default=False) graph_matchings = models.BooleanField(default=False) dp = models.BooleanField(default=False) dfs_and_similar = models.BooleanField(default=False) meet_in_the_middle = models.BooleanField(default=False) games = models.BooleanField(default=False) schedules = models.BooleanField(default=False) constructive_algorithms = models.BooleanField(default=False) greedy = models.BooleanField(default=False) bitmasks … -
How to stop user coming back to login page using back button in django
I have a created a website in django and when hit backbutton it comes to login page how to avoid that. -
Django: Send form inputs in URL
I am new to Django and was trying to create a web-app student management system in which students are added by admin and students can edit their details by entering their enrollment-id. In models.py I added this model class Student(models.Model): gender_choices = [('M', 'Male'), ('F', 'Female')] enrollment_no = models.CharField(max_length=10, primary_key=True, unique=True) first_name = models.CharField(max_length=50) last_name = models.CharField(max_length=50) father_name = models.CharField(max_length=50) mother_name = models.CharField(max_length=50) address = models.CharField(max_length=200) dob = models.DateField('date of birth') gender = models.CharField(choices=gender_choices,max_length=1,default=None) def __str__(self): return (self.first_name +" "+ self.last_name) form for entering student enrollment id at index.html page is <form action="{% url 'students:detail' %}" method="post"> <div class="form-group"> <label for="enrollmentid">Enrollment ID: </label> <input type="text" class="form-control" id="enrollmentid" placeholder="Enter enrollment id"> </div> <div class="form-group"> <label for="dob">Date of Birth: </label> <input type="email" class="form-control" id="dob" placeholder="Enter dob (YYYY-MM-DD)"> </div> <button class="btn btn-primary">Edit Details</button> </form> Now I want to go to /students/detail/{enrollment id given by user} route how can i pass the input to url In views.py I have defined def detail(request, student_id): try: student = Student.objects.get(pk=student_id) except Student.DoesNotExist: raise Http404("Student do not exist") return render(request, 'students/detail.html', {'student': student}) In urls.py I have defined app_name = 'students' urlpatterns = [ path('', views.index, name='index'), path('detail/<student_id>', views.detail, name='detail') ] If i manually enter http://localhost:8000/students/detail/ABC1235 then I … -
Django Template nests script automatically
AOS and Chart.js files are getting overlapped. I am using django 3.0.5. In the template, I have tried using 1 script block and 2 script blocks (shown in the example below), but it still keeps giving the same error. The scripts in the code are in different tags but the response sent by the local server nests the scripts. base.html script part <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script> {% block script %} {% endblock script %} {% block script_2 %} {% endblock script_2 %} weatherdetail.html script part {% block script %} <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js"></script> <script> // TEMPERATURE GRAPH var chart_temperature = document.getElementById('tempChart').getContext('2d'); var chart = new Chart(chart_temperature, { type: 'line', data: { labels: {{days | safe}}, datasets: [{ label: 'Maximum Temperature', backgroundColor: 'rgba(255, 255, 255, 0)', borderColor: 'rgba(255, 0, 0, 0.9)', data: {{temp_high | safe}} }, { label: 'Minimum Temperature', backgroundColor: 'rgba(255, 255, 255, 0)', borderColor: 'rgba(255, 150,0,0.9)', data: {{temp_low | safe}} }] }, options: { scales: { yAxes: [{ ticks: { max: 50, min: 0, stepSize: 10 } }] } } }); // PRECIPITATION GRAPH var chart_precipitation = document.getElementById('precipChart').getContext('2d'); var chart = new Chart(chart_precipitation, { type: 'line', data: { labels: {{days | safe}}, datasets: … -
In django while using images from static folder how can we call the images in main index
I used this syntax but I think after background images there is some problem please fix guys. <header class="intro-header" style="background-image: {% static 'img/home.jpg' %}"> -
Making related query?
There are 3 models, I want to execute a query like this select article_id from votes_vote where user_id=user.id and value=True with the orm. I try this Article.objects.filter(author=user.id, likes=True) Vote class Vote(models.Model): value = models.NullBooleanField() user = models.ForeignKey(User, on_delete=models.CASCADE) article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name='likes') voted_on = models.DateTimeField( auto_now=True ) article class Article(models.Model): author = models.ForeignKey(User, on_delete=models.CASCADE) slug = models.SlugField(db_index=True, unique=True, max_length=255) title = models.CharField(max_length=255) subtitle = models.CharField(blank=True, max_length=400) # El campo RichTextUploading lo heredo de CKEDITOR body = RichTextUploadingField() image = models.ImageField(upload_to='featured_image', blank=True) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) user class User(AbstractUser): # Lista de cohortes de Academlo COURSE_START = [ ('J2019', 'Julio 2019'), ('E2020', 'Enero 2020'), ('M2020', 'Mayo 2020'), ] GENDER = [ ('M', 'Hombre'), ('F', 'Mujer') ] # Campos de usuario first_name = models.CharField(max_length=200, blank=False) last_name = models.CharField(max_length=200, blank=False) username = models.CharField(max_length=200, blank=False, unique=True) email = models.EmailField(unique=True, max_length=300, blank=False) course = models.CharField(choices=COURSE_START, max_length=5) gender = models.CharField(choices=GENDER, max_length=1)