Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
How to access user details in all pages in django?
After login I want to access User details when ever I want (Particularly in navigation bar). I did not use user model provided in django. I created my own model like this for authentication. My database is stored in mysql on phpmyadmin(Xampp). AdminUser Modal class adminUser(models.Model): username=models.CharField(max_length=50) firstname=models.CharField(max_length=50) department=models.CharField(max_length=50) name=models.CharField(max_length=50) mail=models.CharField(max_length=50) id=models.IntegerField(primary_key=True) password=models.CharField(max_length=200) class Meta: db_table="admin_users" admin_users.py def login(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') if username is not None and password is not None: user=adminUser.objects.get(username=username) hashed_password = user.password is_check = bcrypt.checkpw(password.encode('utf8'),hashed_password.encode('utf8')) print(is_check) if is_check==True: return redirect(reverse('faq_index')) else: return render(request,'AdminUsers/login.html') return render(request,'AdminUsers/login.html') During the login User Details can be only access by login function but I want to access user details in all pages for navigation bar and also want to find out whether user is authenticated or not. As I am not using User Model in django so I can not user user.is_authenticated(). So How do I do this? -
How i can to refactor code model using Built-in class-based generic views in django?
i implements Views with Built-in class-based generic views in django. i using a Listview CreateView UpdateView DeleteView like this. @method_decorator(decorators, name='dispatch') class CustomerListView(ListView) @method_decorator(decorators, name='dispatch') class CustomerCreateView (CreateView ) @method_decorator(decorators, name='dispatch') class CustomerUpdateView(UpdateView ) @method_decorator(decorators, name='dispatch') class CustomerDeleteView(DeleteView ) and this urls.py path('customer/', views.CustomerListView.as_view(), name='customer-list'), path('customer/add', views.CustomerCreateView.as_view(), name='customer-add'), path('customer/update/<id>', views.CustomerUpdateView.as_view(), name='customer-update'), path('customer/delete/<id>', views.CustomerDeleteView.as_view(), name='customer-delete'), this code work normally. but i have implement multiple model with this pattern such as Customer,Employees,Woker, ..... and more. i want to know how to refacetor code like this. in views.py ------------- class Customer(Somthing): # this include Listview CreateView UpdateView DeleteView model = CustomerModel class Employee(Somthing): # this include Listview CreateView UpdateView DeleteView model = EmployeeModel class Woker(Somthing): # this include Listview CreateView UpdateView DeleteView model = WokerModel in urls.py ------------- path('customer/', views.Customer.as_view()), path('employee/', views.Employee.as_view()), path('worker/', views.Worker.as_view()), how the best way to implements?. thank you for expert. -
Why "CSRF verification failed. Request aborted." in CreateModelMixin in django rest framework?
I am new to django rest framework, and trying to write a view to register users but whenever i am running my view by hitting the desired url i get the following error. Error:- Forbidden (403) CSRF verification failed. Request aborted. You are seeing this message because this site requires a CSRF cookie when submitting forms. This cookie is required for security reasons, to ensure that your browser is not being hijacked by third parties. If you have configured your browser to disable cookies, please re-enable them, at least for this site, or for “same-origin” requests. View:- class UserRegistration(mixins.CreateModelMixin, generics.GenericAPIView): serializer_class = RegistrationSerializer def post(self, request, *args, **kwargs): return super().create(request, *args, **kwargs) Serializer:- class RegistrationSerializer(serializers.ModelSerializer): password2 = serializers.CharField(style={'input_type': 'password'}, write_only=True) class Meta: model = User fields = ['username', 'email', 'password', 'password2'] extra_kwargs = { 'password': {'write_only': True} } def save(self): password = self.validated_data['password'] password2 = self.validated_data['password2'] if password != password2: raise serializers.ValidationError({'error': 'p1 and p2 must be same'}) if User.objects.filter(email=self.validated_data['email']).exists(): raise serializers.ValidationError({'error': 'email already exists'}) account = User(email=self.validated_data['email'], username=self.validated_data['username']) account.set_password(password) account.save() return account Note:- I am using postman forAPI testing. I know there are some great way to do the same, but for this instant i would like make this … -
How to use query result in if statement tag in Django template
Is it possible to use query result in if statement template tag category.html (template): {% for ETF in ETFs %} <td>{{ ETF.ticker }}</td> <td>{{ ETF.full_name }} {% if ETF.asset_class == "Inverse" %} <! –– this don't work ––> <span class="alert-warning" > Inverse </span> {% endif %} </td> {% endfor %} views.py def etf_list(request): filtered_results = ETF.objects.all() return render(request, "etf/category.html", { "ETFs": filtered_results, }) It does not work here because ETF.asset_class is not a string object. So it cant equal to another string. Is there other ways to make it work? I have a table of items in the html and want to highlight some items that have some model attributes. -
Django - how can i insert '.json' file to SQLite DB?
my '.json file' like { "users": [ { "userId": 1, "firstName": "AAAAA", "lastName": "as23", "phoneNumber": "123456", "emailAddress": "AAAAA@test.com", "homepage": "https://amogg.tistory.com/1" }, { "userId": 2, "firstName": "BBBB", "lastName": "h5jdd", "phoneNumber": "123456", "homepage": "https://amogg.tistory.com/2" }, { "userId": 3, ... i was search that to google, and try to this problem.. but unresolved. so i use pandas and sqlite3 import sqlite3 as db import pandas as pd df = pd.read_json('test.json') con = db.connect('./test.db') df.to_sql('test', con=con) so DB is created, but .json file data dont save in DB how can solve this problem...? -
Django - Serialize a list of primary keys for ManyToMany attribute?
So I have this test that generates a list of goal categories, which are the primary key then it populates the model described below. When it goes to UserInterestViews if I pass the list of goal_category_list I get an error that they aren't valid PKs, but when I just pass in 1 string it's fine. How do I pass in a list of primary keys to a ManyToManyField in the serializer? test import json from django.urls import reverse from django.test import TestCase from rest_framework import status from cheers.models import GoalCategory from dummy_factory.Factories import UserFactory class UserInterestsTest(TestCase): @classmethod # Generates Test DB data to persist throughout all tests def setUpTestData(cls) -> None: cls.goal_category_list = ['health', 'fitness', 'academic', 'spiritual'] for gc in cls.goal_category_list: GoalCategory.objects.create(category=gc, emoji_url='some_url') cls.user = UserFactory() def test_create(self): response = self.client.post(reverse('set_user_interests'), data=json.dumps({'user': str(self.user.uuid), 'categories': self.goal_category_list}), content_type='application/json') self.assertEqual(response.status_code, status.HTTP_201_CREATED) view.py class UserInterestsView(APIView): """ View for UserInterests object * requires token authentication """ # Create user interests @swagger_auto_schema( request_body=UserInterestsSerializer, operation_description="Create user interests object" ) def post(self, request): serializer = UserInterestsSerializer(data=request.data) if serializer.is_valid(): try: serializer.save() except django.db.utils.InternalError as e: return Response(dict(error=e), status=status.HTTP_400_BAD_REQUEST) return Response(serializer.data, status=status.HTTP_201_CREATED) else: return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) model.py class UserInterests(AbstractBaseModel): user = models.OneToOneField(User, on_delete=models.CASCADE) categories = models.ForeignKey(GoalCategory, on_delete=models.CASCADE) -
setting limit to floatfield according to another floatfield
I have these fields in a form. demand = forms.FloatField(label='Demand:', min_value=0) production_rate = forms.FloatField(label='Production rate:', min_value=0) I need producion_rate to be greater than the demand value. It's possible? -
Exist any way of automatic validation in the django serializer for primaryKey (author_slug or phrase_slug)?
I have my CRUDs with models, serializares and views. # models.py from django.db import models class Author(models.Model): slug = models.SlugField(primary_key=True) name = models.CharField(max_length=200) description = models.TextField() class Meta: db_table = 'authors' class Phrase(models.Model): author_slug = models.ForeignKey(Author, db_column='author_slug', on_delete=models.DO_NOTHING) text = models.TextField() class Meta: db_table = 'phrases' # serializers.py from rest_framework import serializers from .models import Author, Phrase class AuthorSerializer(serializers.ModelSerializer): class Meta: model = Author fields = ('slug', 'name', 'description') class PhraseSerializer(serializers.ModelSerializer): author = AuthorSerializer(source='author_slug', read_only=True,) class Meta: model = Phrase fields = ('id', 'text', 'author_slug', 'author') # views.py from rest_framework import viewsets from .models import Author, Phrase from .serializers import AuthorSerializer, PhraseSerializer class AuthorViewSet(viewsets.ModelViewSet): serializer_class = AuthorSerializer queryset = Author.objects.all() class PhraseViewSet(viewsets.ModelViewSet): serializer_class = PhraseSerializer queryset = Phrase.objects.all() Now i need to do a new specify endpoint GET /exist-relationship-bwt-author-phrase when this body: { "author_slug": "an-author", "phrase_slug": "a-phrase" } Exist any way of automatic validation in the django serializer for primaryKey (author_slug or phrase_slug)? -
DRF test if JSON list of objects contains a specific object
I'm testing an endpoint from Django DRF, which produces a JSON list of objects. I'm trying to check if a specific object is in the returned list. I've tried assertIn and assertContains, but they produce errors. Test code for the assertIn: def test_list(self): client = APIClient() response = client.get('/api/some_list/', format='json') self.assertEqual( len(response.data), 19 ) self.assertIn( response.data, { "id": 2, "name": "WhatToDo" } ) assertIn produces TypeError: unhashable type: 'ReturnList' Test code for the assertContains: def test_list(self): client = APIClient() response = client.get('/api/some_list/', format='json') self.assertEqual( len(response.data), 19 ) self.assertContains( response, { "id": 2, "name": "WhatToDo" } ) assertContain just failed the test. What is the best approach to test if a specific object exists in the JSON list in response? -
ValueError: The view blog.views.post_search didn't return an HttpResponse object. It returned None instead
I'm implementing "search function" to my django blog, using Solr and Haystack. In "http://127.0.0.1:8000/blog/search/", it says TypeError at /blog/search/ post_detail() missing 3 required positional arguments: 'year', 'month', and 'day' Also in "http://localhost:8000/blog/search", it says ValueError at /blog/search The view blog.views.post_search didn't return an HttpResponse object. It returned None instead. blog/forms.py from django import forms class SearchForm(forms.Form): query = forms.CharField() blog/search_indexes.py from haystack import indexes from .models import Post class PostIndex(indexes.SearchIndex, indexes.Indexable): text = indexes.CharField(document=True, use_template=True) publish = indexes.DateTimeField(model_attr='publish') def get_model(self): return Post def index_queryset(self, using=None): return self.get_model().published.all() blog/urls.py from blog.feeds import LatestPostsFeed from django.conf.urls import url from django.urls import include, path from . import views app_name = 'blog' urlpatterns = [ path('search', views.post_search, name='post_search'), ] blog/views.py from .forms import SearchForm from haystack.query import SearchQuerySet def post_search(request): form = SearchForm() if 'query' in request.GET: form = SearchForm(request.GET) if form.is_valid(): cd = form.cleaned_data results = SearchQuerySet().models(Post).filter(content=cd['query']).load_all() # count total results total_results = results.count() return render(request, 'blog/post/search.html', {'form': form, 'cd': cd, 'results': results, 'total_results': total_results}) blog/templates/blog/post/search.html {% extends "blog/base.html" %} {% block title %}Search{% endblock %} {% block content %} {% if "query" in request.GET %} <h1>Posts containing "{{ cd.query }}"</h1> <h3>Found {{ total_results }} result{{ total_results|pluralize}}</h3> {% for result in results %} … -
Nginx 502. Bad Gateway but working with CORS. Should I use CORS in production?
Im trying to dockerize a Django App + React with Nginx and proxy pass the request to my backend with upstream. The issue im having is that if I do not enable cors and allow localhost:4000 within my backend the connection gets refused. Nginx throws: 2021/09/02 21:57:02 [error] 26#26: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.21.0.1, server: , request: "GET /api/users/me HTTP/1.1", upstream: "http://172.21.0.4:8000/api/users/me", host: "localhost:4000", referrer: "http://localhost:4000/" Side Note: I don't know where ... client: 172.21.0.1 ... from the log error above is coming from. I tried to set ALLOWED_HOSTS to ["*"], ["localhost", "localhost:4000", "127.0.0.1", "127.0.0.1:4000"] but it doesn't seem the problem is here. With CORS: CORS_ALLOWED_ORIGINS = [ "http://localhost:4000", "http://127.0.0.1:4000", ] It works just fine. I haven't tried to deploy the app with cors to test it in production So my questions are: Is this the right way of allowing traffic through my web server? Is it okey to have cors in production if it Here is my Nginx.conf: upstream backend { server backend:8000; } server { listen 8080; #mapping port 4000:8080 from docker-compose error_log /var/log/nginx/api.error.log; location /api { proxy_set_header host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-forward-for $proxy_add_x_forwarded_for; proxy_pass http://backend; } location /staticbe/ … -
import declarations may only appear at top level of a module and disallowed MIME type
I'm trying to load a script that includes an import statement, but Firefox shows the "import declarations..." error in the console. The import in my script looks something like this: import { foo } from './path/to/js/file'; I can get rid of this error by including type="module" as an attribute of the script tag in my HTML, but then I get a different error in the console: "Loading module from “http://localhost:8000/path/to/js/file” was blocked because of a disallowed MIME type (“text/html”)." It also shows a 404 in the console for the script I'm trying to import. Interestingly, I can get rid of both of these by appending .js to my import statement: import { foo } from './path/to/js/file.js'; But since file.js is part of a larger library with its own import statements, all subsequent import statements raise MIME type errors and 404s. I'm using Django as my backend framework and the application is in a docker container. What am I doing wrong? -
How to turn off django logging INFO to console?
For some reason I cannot figure out how to get django to stop spamming INFO level information to the console. I've tried logging.disable(logging.CRITICAL) in settings.py, as well as this dict in settings.py: LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'handlers': { 'console': { 'class': 'logging.StreamHandler', }, }, 'root': { 'handlers': ['console'], 'level': 'INFO', 'propagate': False }, } Can anyone help me with this? Thanks! -
Django how can I redirect after post request result
def postDataRequest(request): if request.method == 'POST': username = request.POST['username'] userid= request.POST['userid'] if(userid== "21310"): context = { "result" : Dataengine(username,userid).dataFunc() } messages.add_message(request, messages.SUCCESS, context) return render(request, 'pages/dataresult.html', context) I show some data to users with post request.What I want to do is redirect 'pages/index.html' within 30 seconds after the user sees the result on the 'dataresult.html' page. How can I do that? -
Iterate over variable and insert additional rows Postgres
Just to note, yes I have seen similar questions on here but none quite close enough for the particular issue. I have a table (let's call it 'table 1') in postgres with three columns based on a django model, 'ID' (auto incrementing value), 'affiliation', and 'entry'. What I need to do is take every entry where affiliation = 52, and then add an additional row with entry = query.entry and affiliation = 48 (just to reiterate, I need additional rows, not changed values). I also need to make sure that the entry + affiliation pair don't already exist. No matter what I do I get a syntax error! Any help? The latest call was: do $$ declare id_array int[]; begin insert into id_array table_1.entry where table_1.affiliation = 52; for id in id_array loop if not exists (select entry from table_1 where affiliation = 48) then insert into table_1 (affiliation, entry) values (48, id); else raise notice "already exists"; end if; endloop; end; $$ Any ideas? I'm at a complete loss...This is by far the most complex query I've ever ran. -
How to use register users in django that are register in Laravel?
The website is develop in Laravel. I want to add some functionalities in it. Kindly help me to that how can i get Users in django that are register in Laravel? -
Django/Python change content.innerHTML to a src page
I am running a page that on a click, replaces the content in an iFrame. The JS in index.js looks like this: if (page == 'stationData') { content.innerHTML = '<h1>Station Data</h1>'; content.innerHTML += '<iframe class="site_data_tab" src="stationDataHTML.html"></iframe>'; } The old iFrame data goes away and the text "Station Data" appears as expected, but I can't figure out how to get the stationDataHTML.html page to appear in the iFrame. I've tried something like this: index.js: if (page == 'stationData') { content.innerHTML = '<h1>Station Data</h1>'; content.innerHTML += '<iframe class="site_data_tab" src="{% url \'data-stationData\' %}"></iframe>'; } urls.py: urlpatterns = [path('', AboutView.as_view(template_name="stationDataHTML.html")),] views.py: class AboutView(TemplateView): template_name = "stationDataHTML.html" When I run, and I click the button to change the iframe content, I recevie and error Not Found: /data/stationDataHTML.html [02/Sep/2021 16:02:04] "GET /data/stationDataHTML.html HTTP/1.1" 404 6279 Is there a a way to change the iframe content to a locally hosted page? (stationDataHTML.html) -
DRF Viewset - Return a 400 if object exists and a 200 if it doesn't
Using Django Rest Framework, I'm trying to create an API endpoint to determine if a given name of an item, already exists. If it does, then we should let the frontend app know by returning a 400 Bad Request. If it does not exists, then we send a positive 200 OK request. I find that I can send a 400 just fine but if the item doesn't exist, I get a 404 that I can do nothign about. views.py from rest_framework import viewsets,status from rest_framework.response import Response from .serializers import * class ItemCheckViewSet(viewsets.ModelViewSet): """ The views that are returned when we peform checks against the items """ lookup_field = 'name' queryset = Item.objects.all() def get_serializer_class(self): return ItemSerializer def retrieve(self, request, *args, **kwargs): instance = self.get_object() serializer = self.get_serializer(instance) if len(serializer.data) > 0: return Response("Item already exists", status.HTTP_400_BAD_REQUEST) return Response("Item does not exist", status.HTTP_200_OK) serializers.py from rest_framework import serializers from .models import Item class ItemSerializer(serializers.ModelSerializer): class Meta: model = Item fields = "__all__" -
Django objects.get for loop issue
I'm trying to do a for loop 1 through 100 into a primary key (pk) for an objects.get in django. I keep getting a matching query does not exist. I assume the django isn't reading the output as an int. def f_factory(i): def f(offset): nonlocal i i += offset return i for i in range(3): an = djangonote.objects.get(pk=i) print(an.id) -
How to override div wrapper class of ckeditor Django?
Cant find a way to override ckeditor base wrapper div class. By default it has html template like this: https://i.stack.imgur.com/8gZUJ.png Is there a way to change class name "django-ckeditor-widget" to something else? Was trying to do: class PostAdminForm(forms.ModelForm): content = forms.CharField(widget=CKEditorWidget(), attrs={'class': 'MyCustomClass}) class Meta: model = Post But this dosnt work -
When to run a command in docker compose and when in dockerfile?
I am somehow newbie in docker, so bear with me for a potentially stupid question. From what I understood, if I want to have a running container and not an executable, you end it up with a "command". Okey. So if what I want is a container serving a django app, I have to add something like: python manage.py runserver 0.0.0.0:8000 Now the question is: Do we add this at the end of the dockerfile that defines the image? Or do I add this command in the docker compose that uses the image, like this? services: web: build: . command: python manage.py runserver 0.0.0.0:8000 [...] -
Is it possible to send a request to django rest api to run a script?
I installed Django and Django Rest Api. I want to send some data to rest api. Rest api will take the data and run a script with this data and get a result. Then send this result back to me. There won't be database usage. Like this, request : http://testerapi.com:8000/search?q=title:xfaster564CertVal9body:A%22&fl=id Response : {validation : true} Is it possible? -
How to append specific html to a Django code block using only Python/Django?
I have a form I'm working with in Django. I have a built in error message I'm trying to get to render on the form. My first step is to get the error message to render on the form and then I will go into the function and tweak when it shows up. My problem emerges when it comes to doing it in python. Normally, my preferred way would be to JQuery for the footer and use JavaScript to append/prepend the HTML. Then set it to show/hide based on conditionals. However, for this I am wanting to do it in Python to make it easier for the people working w/ me. Here's an example of the error message HTML I would like to use for appending to something else in JS. error_field.append('<em for="name" class="form-error-message text-danger">'); Here is an example of the Django Code Block I would like to add it within {% block form-footer %} {{ block.super }} {% endblock %} What is the easiest way to accomplish this within Python/Django? To be clear, I can figure out the conditional stuff myself. Just the rendering of the specific HTML/CSS error class I have already created. I should be able to … -
How to dynamically change Django Form field type (e.g. `forms.CharField` to `forms.ChoiceField`) without changing the data member variable?
TL;DR How can I change the search term CharField (of any of the rows in the image below) to another field type (e.g. ChoiceField, DateField, etc) based on the type of the selected database field (in the first select list on that row - see screenshot below)? Long version I have a cool hierarchical advanced search interface, e.g.: Each row specifies a search term/condition and reads as a search, like: <field> <condition> <term> e.g. age > 5 where the form field names are: fld (for "database field") ncmp (for "negatable comparison type") val (for the search term) There is a hidden field called pos for the hierarchy and group type data, but that's irrelevant to my question. Rows and subgroups can be dynamically added/removed to/from the hierarchy and can be and-ed or or-ed together. It works great. But the problem I want to solve is that it is somewhat limited by field type. I would like to be able to dynamically change the contents of the condition select list (ncmp) and the type of search term field (val) based on the selected database field (fld) (or the selected condition, e.g. if isnull: hide the term field). Here are some examples … -
Use Django's login_required decorator code inside a view function?
I want to write a view in Django (3.2) that allows any user to enter a value, and only after that has been submitted to require login (or signup!). Something like follows: def my_view(request): if request.GET.get('val', None): # now login is required to do something # can we use the login_required decorator here # to forward to login, and then back here after login? else: # login is not yet required # ... a form to gather up 'val' Can I re-use the login_required decorator in some clean way in the middle of the function? I could copy and paste its code (and the code of user_passes_test), but copy-and-paste seems unfortunate.