Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django session is never authenticated even when user is logged in
I'm using Django REST framework with Django for backend, React for front end. I'm trying to make a GET request from my front-end to the get_user endpoint. However, even when I called login_user and confirmed that user_is_authenticated = true with that function when I call the get_user endpoint it always return false and I get an AnonymousUser. In my front end axios call I set withCredentials to true so everything should be working on the front end afaik. views.py file from django.contrib.auth import authenticate, login, logout from django.contrib.auth.hashers import make_password from rest_framework import serializers, status, permissions, status from rest_framework.decorators import api_view, authentication_classes from rest_framework.response import Response from users.serializers import UserSerializer from django.contrib.auth.models import User @api_view(['GET']) def get_user(request): print(request.user.is_authenticated) return Response(status=status.HTTP_200_OK) @api_view(['POST']) def register_user(request): match_username = User.objects.all().filter( username=request.data['username']) match_email = User.objects.all().filter(email=request.data['email']) serializer = UserSerializer(data=request.data) if serializer.is_valid() and not match_username and not match_email: user = User.objects.create(username=serializer.data['username'], password=make_password( serializer.data['password']), email=serializer.data['email']) user.save() send_register_email( serializer.data['username'], serializer.data['email']) return Response(status=status.HTTP_201_CREATED, data=UserSerializer(user).data) else: if match_username: return Response(status=status.HTTP_400_BAD_REQUEST, data='Username already exists') elif match_email: return Response(status=status.HTTP_400_BAD_REQUEST, data='Email already exists') else: return Response(status=status.HTTP_400_BAD_REQUEST, data="Invalid email") @api_view(['POST']) def login_user(request): username = User.objects.all().filter(username=request.data['username']) if not username: return Response(status=status.HTTP_400_BAD_REQUEST, data='Username not found') user = authenticate( username=request.data['username'], password=request.data['password']) if user is not None: login(request, user) … -
Django: How to get data from html? How to make a value of int increases overtime? How to stop a button from working when that value matches 100?
im working on a project of a web game with Django. The main idea is that the player has a continuous increasing infection meter. He would need to scan mutiple qr code (representing a location, like the game city hunt), to decrease his infection. If it reaches 100, he would become a zombie and a button will be blocked or hide. -To acheive this, I'm having some ideas but i don't know know exactly how i should implement it. Here are the challenges: 1.How to get data from html to my database?(I uses SQLite) -I want to recieve data from the html (the qrcode will turn into points (a -ve value) and i need to add that to the player To decrease his infection rate) 2.How to make a value of int increases overtime? I want to add an dynamicinfection attribute to the player,so that it increase through time(like the Enlightenment meter in Don't starve if you know what i mean lol ) . Should i mainly be coding the timer and the value in html and java script or I should code in python (django)instead? Where should i build the timer thing? 3.How to stop a button from working … -
View returning user as None
So, I'm creating a user confirmation system where a code is created, stored in the session and send through email I made some prints inside the view that is used to confirm the code and active the user, the code is this one: def activeThroughCode(request,): form = VerificationForm() if request.method == 'POST': form = VerificationForm(request.POST) if form.is_valid: entered_code = request.POST.get('verification_code') stored_code = request.session.get('verification_code') print("Entered Code:", entered_code) print("Stored Code:", stored_code) username = User.objects.get('username') if entered_code == stored_code: print(username) try: user = User.objects.get(username=username) user.is_active = True user.save() messages.success(request, f'Your account is active with success.') return redirect('login') except User.DoesNotExist: messages.error(request, 'Incorrect verification code.') return redirect('login') else: messages.error(request, f"It wasn't possible to confirm your email") return render(request, 'activate.html',{'form': form}) When digiting the code in my form, I can confirm through terminal the entered code and stored code are the same, and everything is ok until here but, for validating my user, I need, obviously, request the user to active and save it, but the result for username = User.objects.get('username') if entered_code == stored_code: print(username) is None. I'm 99% sure it's the only error, because my Exception is being printed to me, so it means the code confirmation is actually working any idea of what … -
django.urls.exceptions.NoReverseMatch: Reverse for 'like_post' with arguments '('',)' not found
There is full error: Reverse for 'like_post' with arguments '('',)' not found. 1 pattern(s) tried: ['recipe/like/(?P[0-9]+)\Z'] I suspect there is some issue with post_if but I'm unable to point out exactly whats wrong. i really dont know what to do, i think i tried everything(. views.py: def LikeView(request, pk): post = get_object_or_404(models.Recipe, id=request.POST.get('post_id')) liked = False if post.likes.filter(id=request.user.id).exists(): post.likes.remove(request.user) liked = False else: post.likes.add(request.user) liked = True return HttpResponseRedirect(reverse('recipe-detail', args=[str(pk)])) templates: {% block content %} <form action="{% url 'like_post' post.pk %}" method = "POST"> {% csrf_token %} <form action="{% url 'like_post' post.pk %}" method="POST"> {% csrf_token %} {% if user.is_authenticated %} {% if liked %} <button type="submit", name="post_id", value="{{ post.id }}", class="btn btn-danger btn-sm">Unlike</button> {% else %} <button type="submit", name="post_id", value="{{ post.id }}", class="btn btn-primary btn-sm">Like</button> {% endif %} {% else %} <small><a href="{% url 'login' %}">Login</a> to like</small> {% endif %} - {{ total_likes }} Likes </form> models.py: class Recipe(models.Model): title = models.CharField(max_length=100) description = models.TextField() author = models.ForeignKey(User, on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) ingredients = models.ManyToManyField(Ingredient) likes = models.ManyToManyField(User, related_name='blog_posts') def get_absolute_url(self): return reverse("recipes-detail", kwargs={"pk": self.pk}) def total_likes(self): return self.likes.count() def __str__(self): return self.title -
AssertionError: 404 != 200 in django testing
I have test code, but it displays error: self.assertEquals(response.status_code, 200) AssertionError: 404 != 200 class TestViews(TestCase): def setUp(self): self.client = Client() self.list_url = reverse('home') self.about_url = reverse('about', args=[1]) def test_index(self): response = self.client.get(self.list_url) self.assertEquals(response.status_code, 200) self.assertTemplateUsed(response, 'job_app/index.html') def test_about(self): response = self.client.get(self.about_url) self.assertEquals(response.status_code, 200) self.assertTemplateUsed(response, 'job_app/about.html') my url: path('about/<int:pk>/', views.about.as_view(), name='about'), view: class about(DetailView): model = JobsModel template_name = 'job_app/about.html' context_object_name = 'job' i dont know what to do -
Is it okay to use render partial a lot?
I have a main page called home.html which contains some widgets(Latest comments, banner ads, most popular content and ...) Instead of putting all widgets in the main view. I have isolated each widget using render partial. Does it make sense? for examle: {% render_partial 'Home.Component.CategoryBox' %} {% render_partial 'Home.Component.recentPost' %} is it true? -
I want to connect my Android app to an django rest api
The api is already built and I made the app in Kotlin API 21 with AndroidStudio (its basicly an register and login for users app for now) The problem is i couldn't find any sources to follow, so if you can give any sources (yt video or an articale) or directly a source code or smth that would be really helpfull. https://www.youtube.com/watch?v=RpNqI7RtJGY&t=4s The only source that i could find. -
Utilizing Poppler and Django in Digital Ocean App
I am having issues with Poppler playing nice with the DigitalOcean Apps. I have a Django Web App that I have built and I have an automation script that I want to run. This script takes the text file reads the file and then puts the contents into a db field for a user text search function. It will work on my local machine, but it will not run. I get a PDFInfoNotInstalledError. In researching that error it states that Poppler is not installed and will need to be installed. Digital Ocean will not let you do an apt install from the console. I created an aptfile to install poppler. I was asked by DO support to add it in the requirement.txt file. I did that and added the path to the $PATH variables. Still was getting the same error. Unsure on what to do next can someone help me with this issue? I have tried to add poppler to the server, I have tried adding a python package for poppler. I was expecting for this to be recognized so that the OCR tool could work. -
How to manually add a datetime input element to a Django template without using forms
I want to manually add datetime input elements to an HTML where needed, but as the targets should be dynamic, I cannot use forms. Is there a way to achieve this with JS? Something like this (or ways to achieve similar results): $('#my-target-div').djangoDatetime() Or $('#my-anchor-button').djangoDatetime({target: '#my-input-element'}) I want to also have Django's field buttons (like calendar, date picker, ...) be included. I saw Django's built-in DateTimeShortcuts.js, but I can't achieve what I plan. -
celery and gunicorn conflict in vps deploy
i want to deploy a django project but when i enter this command: gunicorn project.wsgi, i get this error [2024-03-17 08:39:59 -0400] [12173] [INFO] Starting gunicorn 20.0.4 [2024-03-17 08:39:59 -0400] [12173] [INFO] Listening at: http://127.0.0.1:8000 (12173) [2024-03-17 08:39:59 -0400] [12173] [INFO] Using worker: sync [2024-03-17 08:39:59 -0400] [12176] [INFO] Booting worker with pid: 12176 [2024-03-17 08:39:59 -0400] [12176] [ERROR] Exception in worker process Traceback (most recent call last): File "/usr/lib/python3.7/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker worker.init_process() File "/usr/lib/python3.7/site-packages/gunicorn/workers/base.py", line 119, in init_process self.load_wsgi() File "/usr/lib/python3.7/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi self.wsgi = self.app.wsgi() File "/usr/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi self.callable = self.load() File "/usr/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 49, in load return self.load_wsgiapp() File "/usr/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp return util.import_app(self.app_uri) File "/usr/lib/python3.7/site-packages/gunicorn/util.py", line 358, in import_app mod = importlib.import_module(module) File "/usr/lib/python3.7/importlib/init.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "", line 1006, in _gcd_import File "", line 983, in _find_and_load File "", line 953, in _find_and_load_unlocked File "", line 219, in _call_with_frames_removed File "", line 1006, in _gcd_import File "", line 983, in _find_and_load File "", line 967, in _find_and_load_unlocked File "", line 677, in _load_unlocked File "", line 728, in exec_module File "", line 219, in _call_with_frames_removed File "/root/reg_project/registration/project/init.py", line 2, in … -
Empty Table after making my CHOICES in the model
I have this django model for category : class CategoryModel(models.Model): CATEGORY_CHOICES = [ ('first','hardware'), ('second','software'), ('third','network') ] category = models.CharField(max_length=15,null=False,blank=False,choices=CATEGORY_CHOICES) class Meta: db_table = 'categories_table' On the data base it creates the table but its empty , and i want it to have three instances of each choice i defiend in the CATEGORY_CHOICES I wanted to have like auto filled , without i manually create the instances -
Logical use of render partial
I have a main page called home.html which contains some widgets(Latest comments, banner ads, most popular content and ...) Instead of putting all widgets in the main view. I have isolated each widget using render partial. Does it make sense? {% render_partial 'Home.Component.CategoryBox' %} {% render_partial 'Home.Component.recentPost' %} -
Django don't save choice field
I try save choice field but for no reason field never save. I try create modelform and even in admin panel this field don't save. I want to give user option to choose when he want to get email recomendations. Maybe someone have idea whats wrong. I see documentation of django and still don't get why this don't save. My model: class Profile(models.Model): DAILYDIGEST = 'DAILY' WEEKLYDIGEST = 'WEEKLY' NONERECOMMENDATION = 'NONEREC' EMAILDIGEST = [ (NONERECOMMENDATION, 'Nie wysyłaj mi rekomendacji'), (DAILYDIGEST, 'Dzienne rekomendacje'), (WEEKLYDIGEST, 'Cotygodniowe rekomendacje'), ] [...] user = models.OneToOneField(User, on_delete=models.CASCADE, null=True, verbose_name='Użytkownik') [...] emailrecommendation = models.CharField( verbose_name='Wybierz jak często chcesz otrzymywać rekomendacje', max_length=20, choices = EMAILDIGEST, default = WEEKLYDIGEST, ) Model form: class EmailRecommendations(ModelForm): class Meta: model = Profile fields = ['emailrecommendation'] View: def emailrecsettings(request): if request.method == 'POST': form = EmailRecommendations(instance=request.user.profile, data=request.POST) if form.is_valid(): formsave = form.save() print(formsave) else: form = EmailRecommendations(instance=request.user.profile) return render(request, 'profile/emailrecommendations.html', {'form': form}) -
prevent access to home page for anyone unless has username and password
I have made a project and i have faced some issue about Permissions and Authorization the problem I am facing is anyone can access to any page in my project without login by just copy and past the Url he can access to any page I want to stop that an let only the people who has user name and password get the permission this is my url.py `from django.urls import path from . import views app_name = 'store' urlpatterns = [ path('', views.signin, name = "signin"), path('login', views.index, name="index"), path('logout', views.signout, name="signout"), path('registration', views.registration, name="registration"), path('book/<int:id>', views.get_book, name="book"), path('books', views.get_books, name="books"), path('category/<int:id>', views.get_book_category, name="category"), path('writer/<int:id>', views.get_writer, name = "writer"), ]` this is my view.py `from django.shortcuts import render, redirect, get_object_or_404 from django.contrib.auth.models import User from .models import Category, Writer, Book, Review, Slider from django.contrib.auth import authenticate, login, logout from django.contrib import messages from django.core.paginator import EmptyPage, PageNotAnInteger, Paginator from .forms import RegistrationForm, ReviewForm from django.http import HttpResponse def index(request): newpublished = Book.objects.order_by('-created')[:15] slide = Slider.objects.order_by('-created')[:3] context = { "newbooks":newpublished, "slide": slide } return render(request, 'store/index.html', context) def signin(request): if request.user.is_authenticated: return redirect('store:index') else: if request.method == "POST": user = request.POST.get('user') password = request.POST.get('pass') auth = authenticate(request, username=user, password=password) if … -
Trouble Deleting Items from Cart Using AJAX In Django
I am new in Stack overflow and I am getting problem during deleting product from cart In my cart.html: <button class="btn btn-sm btn-remove delete-item" data-item="{{product_id}}"><i class="fas fa-trash-alt" ></i></button> This is the delete button I created. Now also I created js for this button so in my cart.js: console.log("Hi"); $(document).on("click", '.delete-item' ,function(){ let this_val=$(this) var _pID=$(this).attr('data-item'); console.log(_pID); $.ajax({ url: '/delete-from-cart', data: { 'id': _pID, }, dataType: 'json', beforeSend: function(){ this_val.hide() }, success: function(response){ this_val.show() $(".cart-items-count").text(response.totalcartitems) $("#cart-list").html(response.data) } }) }) for the js file when i am clicking on the delete button I am getting product ids as output I also created a views for it. So, In my views.py: def delete_item_from_cart(request): product_id=str(request.GET['id']) if 'cart_data_obj' in request.session: if product_id in request.session['cart_data_obj']: cart_data=request.session['cart_data_obj'] del request.session['cart_data_obj'][product_id] request.session['cart_data_obj'] = cart_data cart_total_ammount=0 if 'cart_data_obj' in request.session: for p_id, item in request.session['cart_data_obj'].items(): cart_total_ammount += int(item['qty']) * float(item['price']) context= render_to_string("core/async/cart_list.html", {"products":products}, {"data":request.session['cart_data_obj'],'totalcartitems': request.session['total_cart_items'] ,'cart_total_ammount':cart_total_ammount}) return JsonResponse({"data": context, 'totalcartitems': request.session['total_cart_items'] ,'cart_total_ammount':cart_total_ammount}) and then In urls.py: path("delete-from-cart/", delete_item_from_cart,name="delete-from-cart"), this is my url Note: At last I would say that I made a cart page where all the products are displaying which are sellected. and I connected cart-lsit.html with cart.html by main tag with id you can see this in the … -
Django project with a RESTful API for user registration and login using Google or Apple OAuth
which backend parameter to add Internal Server Error: /accounts/google/login/callback/ Traceback (most recent call last): File "/home/zaibe/Desktop/project2/env/lib/python3.10/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) File "/home/zaibe/Desktop/project2/env/lib/python3.10/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) TypeError: api_google_oauth2_callback() missing 1 required positional argument: 'backend' [17/Mar/2024 06:39:23] "GET /accounts/google/login/callback/?code=4%2F0AeaYSHADSCseU_Nkg2BMLc5P8UpfRRqCJUNRIAyHrcW_tX4uQDpPADdj5rTJRS8v6siZHw&scope=email+profile+openid+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email&authuser=0&prompt=consent HTTP/1.1" 500 65562 from django.http import JsonResponse from django.contrib.auth import authenticate, login from django.views.decorators.csrf import csrf_exempt from .forms import UserRegistrationForm from .models import Profile from django.shortcuts import redirect from social_django.utils import psa import json from social_django.views import auth from django.views.generic import RedirectView from django.shortcuts import render def default_callback(request): return render(request, 'default_callback.html') @psa() def api_google_oauth2_login(request): backend = 'social_core.backends.google.GoogleOAuth2' return redirect('social:begin', backend=backend) @psa() def api_google_oauth2_callback(request): backend = 'social_core.backends.google.GoogleOAuth2' return auth(request, backend=backend) @csrf_exempt def api_user_login(request): if request.method == 'POST': # Retrieve raw JSON data from the request body data = json.loads(request.body) # Extract username and password from the JSON data username = data.get('username') password = data.get('password') if username is None or password is None: return JsonResponse({'error': 'Missing credentials'}, status=400) user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return JsonResponse({'message': 'Authenticated successfully'}, status=200) else: return JsonResponse({'error': 'Invalid login'}, status=401) else: return JsonResponse({'error': 'Invalid request method'}, status=405) @csrf_exempt def api_user_register(request): if request.method == 'POST': form … -
How to set BinaryField to primary key in django?
In this code i have: IDChuyenBien = models.BinaryField(primary_key=True, max_length=8) But when i makemigrations and migrate have an error: _mysql.connection.query(self, query) django.db.utils.OperationalError: (1170, "BLOB/TEXT column 'IDChuyenBien' used in key specification without a key length") Although I used max_length as above, I am using Django 4.2.9 connect to Mysql I followed the docs as follows: https://docs.djangoproject.com/en/4.2/ref/models/fields/ I have also tried to think of a few other ways but still do not have a solution, because it is required that the data transmitted is binary and will be saved directly to the database, and before that when I did not use the primary key, in mysql when migrating it was also LONGBLOB. Meanwhile t only needs BINARY type with 8 bytes or 10 bytes -
ERROR : metadata-generation-failed while installing uwsgi
using the command pip install uwsgi it gave the error : metadata-generation-failed i was tring to install a WSGI web server for flask, pip install uwsgi and install web server, i needed, And to get thorough the installing functonal webserver for my flask app -
Recursion Error when Modifying ManyToManyField during Django Model Save
I have an issue with removing users from the friends field during save in Django. Here's a description of my idea: Each Profile has a type, which corresponds to a certain rank. For instance, a Profile with type X can have 10 friends, whereas a Profile with type Y can have 20 friends. Here's how I've implemented it: POWER_OF_PROFILE_TYPE = {"X": 0, "Y": 1} class ProfileType(models.TextChoices): X = "X", "x" Y = "Y", "y" class Profile(models.Model): type = models.TextField(choices=ProfileType.choices, default=ProfileType.BASIC, max_length=1) friends = models.ManyToManyField(User, blank=True, related_name="friends") __currently_type = None def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.__currently_type = self.type_of_profile def save(self, *args, **kwargs) -> None: if self.type_of_profile != self.__currently_type: if POWER_OF_PROFILE_TYPE[self.type_of_profile] < POWER_OF_PROFILE_TYPE[self.__currently_type]: users = self.friends.all()[10:] self.friends.remove(*users) self.save() # This is causing recursion error super().save(*args, **kwargs) self.__currently_type = self.type_of_profile Unfortunately, this piece of code results in a recursion error RecursionError ...maximum recursion depth exceeded Could someone help me figure out what I should do? -
Django Serializers, how to show data in nested bridge model serializer
I'm using Django REST Framework. I have 3 different models, 2 are standalone models while the 3rd one is a bridge model that connects the first 2 models # First standalone model class Build(TimeStampedModel): name = models.CharField(max_length=64, null=False, blank=False) type = models.CharField(max_length=64, null=False, blank=False) play_as = models.CharField(max_length=64, null=False, blank=False) link = models.CharField(max_length=255, null=False, blank=False) class Meta: ordering = ['-created_at'] def __str__(self): return f'{self.play_as} - {self.name}' # Second standalone model class Run(TimeStampedModel): name = models.CharField(max_length=64, null=False, blank=False) difficulty = models.CharField(max_length=64, null=False, blank=False) origin = models.CharField(max_length=64, null=False, blank=False) alignment = models.CharField(max_length=64, null=False, blank=False) class Meta: ordering = ['-created_at'] def __str__(self): return f'{self.name} - {self.difficulty}' # Bridge model class RunBuild(TimeStampedModel): run = models.ForeignKey( Run, related_name='runBuild_run', on_delete=models.CASCADE, null=False, blank=False ) build = models.ForeignKey( Build, related_name='runBuild_builds', on_delete=models.CASCADE, null=False, blank=False ) class Meta: ordering = ['-run'] def __str__(self): return f'{self.run.name} - {self.build.name}' The Build serializer is fine, the problem stands in RunBuild and Run serializer. # Model Serializer for Build model class BuildSerializer(serializers.ModelSerializer): created_at = serializers.SerializerMethodField() class Meta: model = Build exclude = ['updated_at'] def get_created_at(self, instance): return instance.created_at.strftime('%B %d, %Y') # Model Serializer for RunBuild model class RunBuildSerializer(serializers.ModelSerializer): # This doesn't work runBuild_builds = BuildSerializer(many=True, read_only=True) created_at = serializers.SerializerMethodField() class Meta: model = RunBuild fields … -
why i showing this error now. because its actually worked still now
why I getting this error this is my code this is my error and I tried. it worked ones. but now its showing this error. I completely undo all works but still its showing this error. can anyone help me? anyone have same problem? -
Django makemigrations returns no changes detected
When I want to run makemigrations, I get no changes detected. I have this class in my models. class car (models.Model): name=models.CharField(max_length=50) def __str__(self): return self.name I have also added myapp in installed apps How can I fix this? -
How can I get a queryset with data for 2 tables?
I am quite new to Django. I'm writing and app using Vue3 in the frontend and Django5 in the backend. I've implemented login already, but I want the user returning to contain the role, that happens to be in another table, and I just get the id. My Django models: class Role(models.Model): id_role = models.AutoField(primary_key=True) name = models.TextField(max_length=100) permissions = models.ManyToManyField(Permission) def __str__(self): return self.name class User(models.Model): id_user = models.AutoField(primary_key=True) email = models.TextField(max_length=100) password = models.CharField(max_length=255) role_id = models.ForeignKey(Role, on_delete=models.PROTECT) locale = models.TextField(max_length=5) def __str__(self): return self.email Serializers: class RoleSerializer(ModelSerializer): class Meta: model = Role fields = ( 'id_role', 'name', 'permissions' ) class UserSerializer(ModelSerializer): class Meta: model = User fields = ( 'id_user', 'email', 'password', 'role_id', 'locale' ) This is my viewset, where I have the login method, and I want it to return the role name instead of the role_id: class UserViewSet(viewsets.ModelViewSet): serializer_class = UserSerializer queryset = User.objects.all() @action(detail=False, methods=['post']) def login(self, request, pk=None): user = serializers.serialize('json', self.queryset.filter(email=request.data["email"], password=request.data["password"])) if (user and user != "[]"): return Response(user) else: return Response({"error": "The user does not exist"}, status=status.HTTP_400_BAD_REQUEST) I've already looked at SO questions (How to make an Inner Join in django?) and tried using this code: @action(detail=False, methods=['post']) def login(self, … -
I'm always getting false for is_authenticate() in Django
I'm a beginner in Django, I'm trying to do email authentication for the users who successfully logged in and redirect them to the respective homepages based on their role. The login is working, I'm getting the otp in mail and otp authentication is also working fine and the user is redirected to the correct homepage. But I realized that I can able to directly access the homepage from the url in browser, even if I'm not logged in. I tried @login_required decorator before the homepages view, but for some reasons it was not working and redirects me to login page even if the user already logged in, so I tried the below way, but now the is_authenticated is always giving me false. def reader_home(request): if request.user.is_authenticated: return render(request, 'reader_home.html', {'username': request.session.get('username')}) else: messages.info(request, 'User is not yet authenticated!') return redirect('homepage') def writer_home(request): print(f'request.user:{request.user}') if request.user.is_authenticated: return render(request, 'writer_home.html', {'username':request.session.get('username')}) else: messages.info(request, 'User is not yet authenticated!') return redirect('homepage') The below is the login_view and otp-verification view: login_view: def login_view(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') role = request.POST.get('role') try: user = UserCredentials.objects.get(username=username, role=role) except UserCredentials.DoesNotExist: user = None if user: if user.check_password(password): login(request, user) otp_secret = … -
djangocms - data not showing in published page, available in edit mode?
I am trying to setup a djangocms plugin to handle FAQ's. When I am in edit mode, everything works. I can see the FAQ's. When I switch to published page, the FAQ's are not showing. Looking at the queryset in edit mode, I have the FAQ's but in published mode the FAQ's queryset is empty. I tried to debug as best as I could with a lot of answers from stackoverflow but just can't find the error. models.py from django.db import models from cms.models.pluginmodel import CMSPlugin class FAQPluginModel(CMSPlugin): title = models.CharField(max_length=255, default="FAQs") def __str__(self): return self.title class FAQItem(models.Model): plugin = models.ForeignKey(FAQPluginModel, related_name="faq_items", on_delete=models.CASCADE) question = models.CharField(max_length=255) answer = models.TextField() def __str__(self): return self.question plugins.py from cms.plugin_base import CMSPluginBase from cms.plugin_pool import plugin_pool from django.utils.translation import gettext_lazy as _ from .models import FAQPluginModel from .admin import FAQPluginModelAdmin, FAQItemInline class FAQPluginPublisher(CMSPluginBase): model = FAQPluginModel module = _("FAQs") name = _("FAQ Plugin") render_template = "faq_plugin.html" # render_template = "faq_collapsible.html" admin_preview = False inlines = [FAQItemInline, ] def render(self, context, instance, placeholder): context.update({ 'instance': instance, 'faq_items': instance.faq_items.all(), }) print("faq_items:", context.get('faq_items')) return context plugin_pool.register_plugin(FAQPluginPublisher) I have tried a lot of the posted solutions: def copy_relations(self, oldinstance): self.faq_items = oldinstance.faq_items.all() This is the one which seemed …