Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
redirect https non-www to https www for nginx django
I tried many solutions but nothing worked. I am trying to redirect https://example.com to https://www.example.com. If I write https://example.com in the address bar, I get an insecure website prompt. I have ssl certificate installed for www.example.com. Here's the code from nginx server: server { server_name exmaple.com www.exmaple.com; location ~ ^/.well-known { root /home/xyz/xyz-dir; allow all; } location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/xyz/xyz-dir; } location /media/ { root /home/xyz/xyz-dir; } location / { include proxy_params; proxy_pass http://unix:/run/gunicorn.sock; } listen 443 ssl; # managed by Certbot ssl_certificate /etc/letsencrypt/live/www.exmaple.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/www.exmaple.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot } server { if ($host = www.exmaple.com) { return 301 https://$host$request_uri; } # managed by Certbot if ($host = 'exmaple.com') { return 301 https://www.$host$request_uri; } # managed by Certbot listen 80; server_name exmaple.com www.exmaple.com; return 404; # managed by Certbot } -
How to implementing Razorpay Test Mode Withdrawal in Django Web App
I'm in the process of developing a Django web app where users can initiate withdrawals with the following flow: On the website, users have the option to withdraw a specific amount. Upon clicking the withdraw button, users are directed to the next page. On this page, users are prompted to enter their bank details. After saving the bank details, users can click the "Continue" button. At this point, I want the specified amount to be automatically transferred to the entered bank account, all while operating in Razorpay's test mode. I would greatly appreciate any insights, code examples, or references on how to implement this flow effectively. Your help is invaluable. Thank you! -
Subclassed Django SelectMultiple ignores any attribute set to its options
following what I found in this answer I am trying to add a custom class to each option into the two select the widget produces. I used the FilteredSelectMultiple admin widget, which is made of two list of elements the user can interact with to select one or more elements. My relevant code: from django.contrib.admin.widgets import FilteredSelectMultiple class MySelectMultiple(FilteredSelectMultiple): def create_option(self, name, value, *args, **kwargs): option = super().create_option(name, value, *args, **kwargs) print(option) option.update({'attrs': {'foo':'bar'}}) # set option attribute print(option) return option from django import forms class MyReportForm(forms.Form): filters = forms.ModelMultipleChoiceField( queryset= Item.objects.none(), # fixed below widget=MySelectMultiple("Item", is_stacked=True), required=False ) def __init__(self, *args, **kwargs): from myapp.utils import get_all_enabled_items super(MyReportForm, self).__init__(*args, **kwargs) # this returns a filtered queryset self.fields["filters"].queryset = get_all_enabled_items(lvl0=True) The dictionary gets updated correctly if printed, but the form just ignores the attributes I set and produces the same HTML: <select name="generic_filters" id="my_id_from" multiple="multiple" class="filtered" data-is-stacked="1"> <option value="1" title="myTitle1">myTitle1</option> <option value="2" title="myTitle2">myTitle2</option> <option value="3" title="myTitle3">myTitle3</option> </select> Please note that if I try to change the "value" using the same code (with option.update({'value':'0'}), the value correctly changes (and makes all the options have the same value!) What am I doing wrong? How do I set an attribute for each select option … -
Django mysql database eats too much RAM even though no queries are coming in
I rented a small vps(1core 1gb-ram 15ssd) for my Django project. When I added another endpoint to the project, the database on the server suddenly started crashing from lack of RAM (the process was simply killed by the system). Attempts to restart the database with the systemctl restart command resulted in an error, and I was unable to restart the database until I shut down another process(telegram integration) to free up memory. My queries are optimised. Hoping to ease the load on RAM, I changed the innodb_buffer_pool_size and key_buffer_size configurations within 1-16M, but the situation didn't change much. Having increased the server rate to 2gb of RAM, I found that RAM consumption increased (mysql's VIRT value in htop before the upgrade was ~1200, now it is ~1600). Are these normal values of RAM consumption? Why is the database consuming so many resources while idle? How can I redistribute the load between cpu and ram? Why did adding a feature to django affect the database so much(before even using it)? I would really appreciate a detailed explanation of Django's behavior and its impact on the DB, or any advice -
Django not able to authenticate username and password , although data is present is db and the entered data is checked correctly
view.py def loginverify(request): print("-----------login verification------------") if request.method == "POST": cemail = request.POST.get("cemail") cpassword = request.POST.get('cpassword') print(cemail, cpassword) (able to print the data sent ) User = authenticate(request, email=cemail, password=cpassword) print(User)-->(this shows none) if User is not None: login(request, User) print("no problem") messages.success(request, 'Login successful') return redirect('dashboard') # Redirect to the user's dashboard or landing page else: messages.error(request, 'Invalid email or password') print("problem occurred") template = 'polls/login.html' return render(request, template) # Redirect to login page template = 'polls/CustLandingpage.html' return render(request, template) *well the data is received by this function but the authentication is not working * model.py from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class Customer(models.Model): name = models.CharField(max_length=20) Email = models.CharField(max_length=50) password = models.CharField(max_length=20) USERNAME_FIELD = 'Email' REQUIRED_FIELDS = ['name'] for authentication email and password is used , I tried most of the things but its not working , kindly help -
How to call a View function from another one on Python Django
I'm creating a project that gets NBA data from an API with Python-django. I got a view that renders the index.html page and created another one that generates the data and save it on a model. I think it's completely wrong but i'm kinda stuck....Basically I want to display the index.html page with all the objects on the model Post (at this time this part works), but I also want to call the view "Pontos" to create the posts automatically if some parameter it's called (example, I would create a IF to see if the datetime was 11 o'clock. If it's true, then call the 'Pontos' view to generate the data that would be displayed on index.html) but I don't know how to call the view on another view. Can someone explain to me what I could do to solve this ? I tried creating and IF on the index view to call the Pontos view, but when the Pontos View it's called, it returns his own index.html without the parameters needed....resulting in a blank page. -
How to display the date one day ahead?
Well, currently I only display the 'calendar' with the current date. I would like the current date to be displayed in one field, and the next date to be displayed in the next one, up to 5 days later. def Schedule(request): date = datetime.date.today() report=Submissions.objects.filter(execution_date=date) context={ 'date':date, 'report':report, } return render(request, 'staff/work_schedule.html', context) <div class="row no-gutters" style="width: 100%;"> <div style="width: 100%;background-color: rgb(0, 0, 0);color: white;font-weight: 800;font-size: 12px;">{{date}}</div> <table class="table table-striped table-hover"> <tbody> {% for qs in report %} <tr style="font-size: 10px;text-align: center;"> <th style="width: 8%;">{{qs.client.user.get_full_name}}, tel.:{{qs.client.phone_number}}</th> <th style="width: 8%;">{{qs.client.post_code}} {{qs.client.city}}, ul.{{qs.client.street}}</th> <th style="width: 40%;">{{qs.contents|linebreaks|truncatewords_html:50}}</th> <th style="width: 40%;">{{qs.details_planned_service|linebreaks|truncatewords_html:50}}</th> </tr> {% endfor %} </tbody> </table> <div style="width: 100%;background-color: rgb(0, 0, 0);color: white;font-weight: 800;font-size: 12px;">29 styczeń 2024</div> <div style="width: 100%;background-color: rgb(0, 0, 0);color: white;font-weight: 800;font-size: 12px;">30 styczeń 2024</div> </div> -
why notification message is not showing in off canvas
this my balance.html code {% extends "money/index.html" %} {% load static %} {% block body %} <div class="blatitle"> Balance </div> <div class="bladiv"> <div class="amtext"> Available Amount : ₹ {{ user.bankaccount.balance}} </div> </div> <button id="notification-button" onclick="toggleOffCanvas()"> Notification <span id="notification-badge" class="badge badge-danger">{{ unread_notifications|length }}</span> </button> <div id="offCanvas"> <!-- Off-canvas content --> <div id="offCanvasContent"> <ul id="notification-list"> {% for notification in unread_notifications %} <li>{{ notification.message }} <button class="mark-as-read" data-notification-id="{{ notification.id }}">Mark as Read</button></li> {% endfor %} </ul> {% if unread_notifications %} <button id="mark-all-as-read">Mark All as Read</button> {% else %} <p>No notifications.</p> {% endif %} </div> </div> <div id="overlay"></div> <script src="https://code.jquery.com/jquery-3.6.4.min.js"></script> <script> $(document).ready(function () { // AJAX to mark a notification as read $(".mark-as-read").click(function () { var notificationId = $(this).data("notification-id"); $.ajax({ type: "POST", url: "/mark_notification_as_read/", data: { notification_id: notificationId }, success: function () { // Reload the page or update the UI as needed location.reload(); }, error: function (xhr, status, error) { console.error("Error marking notification as read:", error); }, }); }); // AJAX to mark all notifications as read $("#mark-all-as-read").click(function () { $.ajax({ type: "POST", url: "/mark_all_notifications_as_read/", success: function () { // Reload the page or update the UI as needed location.reload(); }, error: function (xhr, status, error) { console.error("Error marking all notifications as read:", … -
How to correct use django_db_setup (pytest-django)
I try to test my Django app and confused about using test database. # conftest.py @pytest.fixture(scope="session") def django_db_setup(): settings.DATABASES["default"] = { "ENGINE": "django.db.backends.sqlite3", "NAME": "db.sqlite3", } My test files look like this: # tests.py @pytest.mark.django_db def test_mailing_detail(mailing_instance_one): obj_link = mailing_detail(mailing_instance_one) expected_link = reverse( "api:admin_mailing_detail", args=[mailing_instance_one.id] ) assert f"<a href='{expected_link}'>" in obj_link Output: django.db.utils.OperationalError: could not translate host name "app_db" to address: Temporary failure in name resolution app_db is name from app settings file. If I add print(f"{settings.DATABASES['default']}") to django_db_setup() I see correct db parameters. How I can use test database? -
Managing image files in django. Separation of administrative photos of the site and photos of users
I'm begginer in django and doing my first car blog project. I am concerned about the question of how to correctly separate the photos that the user uploads to the page (when adding a new post, creating a profile, etc.) and the photos that are uploaded from the administrative panel (adding a photo category when creating it). As far as I know it is not recommended to store it all together. I made the following directory settings.py MEDIA_URL = '/media/' MEDIA_ROOT = BASE_DIR / "media" Maybe there are some tips or solutions that are used in real projects.Thanks in advance! -
Python Plotly fill between two specific lines
I've seen this question asked before in some form or the other, but never answered entirely, so i'll try my luck. In a plot with several traces, i’m trying to fill the areas between two specific lines that i choose. The desires effect, achieved with matplotlib.pyplot looks like this: desired plot where the cyan and orange areas are filled between their respective trends, and up/down to the red line. The black line is unrelated to those filled areas, but should be plotted along with the blue line regardless. I tried achieving this with Plotly’s fill: 'tonexty', but this doesn’t work out well because due to the randomness of the data, the nearest Y is sometimes the black line and not the red. I can achieve this with pyplot's fill_between function: plt.fill_between(x, y1, y2, color, alpha) Where it can be used as: from matplotlib import pyplot as plt import numpy as np import pandas as pd series1 = pd.Series(np.random.randn(100), index=pd.date_range('1/1/2000', periods=100)) series2 = ts + np.random.randn(len(ts)) positive_contribution = ts2 + 0.5 negative_contribution = ts2 - 0.5 plt.plot(series1, color='black') plt.plot(series2, color='red') plt.fill_between(ts.index, series2, negative_contribution, color='cyan', alpha=0.2) plt.fill_between(ts.index, series2, positive_contribution, color='orange', alpha=0.2) I’d love to hear of a solution / workaround for this. … -
On stripe payment failure update the subscription, what would happen to the failed invoice
I am trying to downgrade the user from annual to quarterly if the payment fails. Which will update the subscription and try to charge the user(with a new invoice) due to proration behaviour, My question is would stripe still retry the failed invoice? I am worried that it will charge the user 2 times. -
Enter key on input field make the webpage redirect to prev step in Django wizard
I have django wizard contains 4 steps: the first step is account step where user enters the account information the second step is personal information, at this step I have some problem: when the user press enter on some input field ( like card num field) the webpage redirect the user to the previous step ( Account step ), the account page returned with all fields filled except passwords ( they are return empty) I will show snapshot of the webpage the form, and I will provide the code: <form method="post" enctype="multipart/form-data" class="multiStep-form style-one simplePresentCart-two"> <div class="row"> {% csrf_token %} {{ wizard.management_form|crispy }} {% if wizard.form.forms %} {{ wizard.form.management_form|crispy }} {% for form in wizard.form.forms %} {% crispy form %} {% endfor %} {% else %} {% crispy wizard.form %} {% endif %} <div class="multiStep-footer"> <div class="multiStep-footer-flex"> <div class="multiStep-footer-left"> {% if wizard.steps.prev %} <button formnovalidate name="wizard_goto_step" type="submit" class="primry-btn-2 lg-btn" value="{{ wizard.steps.prev }}">{% translate "prev step" %}</button> {% endif %} </div> {% if wizard.steps.current == wizard.steps.last %} <div class="multiStep-footer-right"> <input type="submit" class="primry-btn-2 lg-btn" value="{% translate "Register" %}"/> </div> {% else %} <div class="multiStep-footer-right"> <input type="submit" class="primry-btn-2 lg-btn" value="{% translate "Next" %}"/> </div> {% endif %} </div> </div> </div> </form> I have … -
Display Generated Map File of Folium in index.html [Django/Python localhost]
I am trying to display the 'output.html' (The generated Map File using Folium) to be displayed in index.html. Currently I was able to generate the Map without a problem and it is currently stored in BASE_DIR/media (which is where I want it to be stored) Here's my snippet code for views.py: def index(request): # Existing code... final_map = map_init(request) context = { 'gpx_dictionary': gpx_dictionary, 'final_map': final_map } return render(request, 'index.html', context) def map_init(request): #Existing code logic... final_map.save(temp_file_path) return final_map and here's my snippet code for index.html (Currently displaying the map inside the card body): <div class="card col-md-6 mb-4 mx-auto" id="mapResult"> <div class="card-header text-center bg-primary-subtle text-emphasis-primary"> <strong>MAP RESULT</strong> </div> <div class="card-body"> <div id="map-container"> {{ final_map | safe }} </div> </div> </div> It just refreshes the page without displaying the map, How can I Properly display the map on index.html? -
Need inputs on Web application development
I need inputs on tech stack used for building a web application. Currently I'm using Angular with Django in my application. But when I'm trying to query SQL databases using Django in my code, if the datasets are with heavy data Django is not completing the query. How make this work? Can we use any other technology as backend for Angular to work on large datasets? Please share your thoughts on this.. I tried with Django but it's giving timeout issues and exiting out of api. Note: I need to show the result in Angular UI after processing. So I need a better framework that handles heavy processing. -
why the django restframework's "request" not working?
I have below DRF code that is instantiating a class that has GET method, from rest_framework.views import APIView from rest_framework.response import Response from rest_framework.request import Request from rest_framework import status class MrgCompInsert(APIView): def post(self, request): try: # Use rest_framework.request.Request to make the initial request merge_company_info_view = MrgCompInfo.as_view()(Request(request)) organization_data_response = merge_company_info_view.data if organization_data_response.status_code == status.HTTP_200_OK: # Access the data attribute from the Response object organization_data_post = organization_data_response.data post_url = 'https://example.com/ # Use rest_framework.request.Request to make the subsequent request merge_to_kloo_post = Request(request).client.post(post_url, organization_data_post, format='json') if merge_to_kloo_post.status_code == status.HTTP_200_OK: return Response({'message': 'Data sent successfully to the second API'}, status=status.HTTP_200_OK) else: return Response({'error': 'Failed to send data to the second API'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) else: return Response({'error': 'Failed to retrieve Category list'}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) except Exception as e: return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) and then doing a POST on an another restful API. The GET APIView class individually is working fine. But the POST APIView class is causing issue, and I am getting below error. HTTP 500 Internal Server Error Allow: POST, OPTIONS Content-Type: application/json Vary: Accept { "error": "The `request` argument must be an instance of `django.http.HttpRequest`, not `rest_framework.request.Request`." } Then imported request from django.http as shown below from django.http import HttpRequest organization_data_response = MrgCompInfo(HttpRequest) merge_to_post = … -
In Django, when I click a button, I can't satisfy a condition that should be True and then display a panel on the screen
There is a problem in my code but I can't figure out what it is and how to fix it. The code consists of clicking on a button and displaying a panel (redPanel) in the center of the screen that overlays the index.html page. However, the panel must be displayed only if there are both <html> and <head> tags in the textarea. If, however, there is only one of the two tags, then the panel should not be displayed. The condition is found in the custom_tags.py file and for the sake of order and cleanliness I would like it to remain in that file. PROBLEM: In the textarea there are both <html> and <head>, so the condition (if) should be True, but when I click on the button then it does not open panel (redPanel) in the center of the screen. The problem should be in the def only_checkend function of the custom_tags.py file or in the def checkend function of the views.py file or in the javascript script (in index.html). I show you minimal code of all files (including javascript script with fetch). I hope someone can figure out the problem and show me the solution code. index.html {% … -
Django form class data in HTML Template
I am having a hard time getting my data from my form class into my html template. I have the following form class: class AnswerForm(forms.Form): def __init__(self, product, *args, **kwargs): super(AnswerForm, self).__init__(*args, **kwargs) self.fieldsets = {} for index, multiplier in enumerate(product.multiplier_list): rowLength = len(str(multiplier * product.multiplicand)) fieldsetFields = [] for i in range(5, 0, -1): field_name = f'field_{i}' self.fields[field_name] = forms.CharField( label=f'Answer {i}', widget=forms.TextInput(attrs={'class': 'answer-cell', 'tabindex': i, 'maxlength': 1}), required=i <= rowLength ) fieldsetFields.append(self.fields[field_name]) # Determine if row or result if index + 1 == len(product.multiplier_list): fieldsetId = f'fieldset-{product.type}result' else: fieldsetId = f'fieldset-{product.type}row' self.fieldsets[fieldsetId] = fieldsetFields And the form in my html template looks like this: <!DOCTYPE html> <html> <head> <title>Your Page Title</title> </head> <body> <form method="post"> {% csrf_token %} {% for fieldset_id, fields in form.fieldsets.items %} <fieldset id="{{ fieldset_id }}"> {% for field in fields %} <div class="form-group"> {{ field }} </div> {% endfor %} </fieldset> {% endfor %} <button type="submit">Submit</button> </form> </body> </html> I always receive the following output: django.forms.fields.CharField object at 0x0000013E23A3F730&g It worked before without the wrapped fieldset around it. -
DRF, Django Rest Framework. Render results as html
I need to have a page with simple html which shows not pure JSON but formatted data with meta information. I have this snipped of code. class ProductViewSet(viewsets.ModelViewSet): queryset = Product.objects.all() serializer_class = ProductSerializer router = SimpleRouter() router.register(r'product', ProductViewSet) urlpatterns = [ path('product/list/<int:pk>', ProductViewSet.as_view({'put': 'update'}), name='product-view'), path('product/', ProductViewSet.as_view({'get': 'list'}), name='product-view'), ] I have this as result. enter image description here -
pytelegrambotapi (telebot) how create pagination button i use django+telebot
enter image description here button.py from telebot import types def quarter_keyboard_uz(district_id): keyboard = types.InlineKeyboardMarkup() quarters = Quarter.objects.filter(district_id=district_id) for quarter in quarters: button = types.InlineKeyboardButton(quarter.name_uz, callback_data=f'quarter_{quarter.id}') keyboard.add(button) return keyboard bot.py import telebot elif current_state == "wait_district": user = BotUser.objects.get(chat_id=chat_id) district_id = call.data.split('_')[-1] district = District.objects.get(pk=district_id) user.district = district user.user_state = "wait_quarter" user.save() district.save() if current_language == 'UZ': bot.send_message(chat_id, "itimos o'z mfyigizni tanlang", reply_markup=quarter_keyboard_uz(district_id)) elif current_language == 'RU': bot.send_message(chat_id, "выберите общественное собрание вашего района", reply_markup=quarter_keyboard_ru(district_id)) elif current_state == "wait_quarter": user = BotUser.objects.get(chat_id=chat_id) quarter_id = call.data.split('_')[1] quarter = Quarter.objects.get(pk=quarter_id) user.quarter = quarter user.user_state = "wait_adress" user.save() quarter.save() if current_language == 'UZ': bot.send_message(chat_id, "itimos o'z adresingizni kiriting") elif current_language == 'RU': bot.send_message(chat_id, "Пожалуйста, введите ваш адрес") -
Django transaction and racing condition
I have the following Django code: with transaction.atomic(): items = Item.objects.all() for item in items: item.count += 1 Item.objects.bulk_update(items, ['count']) Does this code still contains the racing condition, despite the transaction? My understanding is that transaction doesn't lock the rows for read, so several threads running the same code might read the same count value so as a result it might not be incremented proper number of times? -
CSV File Downloaded as true.txt When Programmatically Triggered in JavaScript
I'm encountering a peculiar issue with downloading .csv files programmatically in a web application. When I click on a presigned URL (pointing to an AWS S3 object) directly from the console log or navigate to it manually, the .csv file downloads correctly with the proper filename and extension. However, when I try to trigger the download programmatically using JavaScript, the file gets downloaded as true.txt instead. Here's the frontend code snippet: const DownloadData = async () => { const token = localStorage.getItem("token"); const backendUrl_fetchdata = `http://127.0.0.1:8000/fetch-data/`; try { const response = await axios.post( backendUrl_fetchdata, { // request payload }, { headers: { Authorization: `Token ${token}`, }, withCredentials: true } ); if (response.status === 200 && response.data.urls) { response.data.urls.forEach(({ url, filename: expectedFilename }) => { console.log("Downloading file from URL:", url); if (expectedFilename.endsWith('.csv')) { // Attempt to download CSV const link = document.createElement("a"); link.href = url; link.setAttribute("download", expectedFilename); document.body.appendChild(link); link.click(); document.body.removeChild(link); } }); } } catch (error) { console.error("Error fetching URLs:", error); } }; Backend (Django): The backend generates presigned URLs for the files stored in AWS S3. These URLs are sent to the frontend as part of the response. Observations: The console.log accurately prints the URL, and clicking it initiates the … -
How to prevent OpenTelemtry traces from being printed to console?
I setup otel traces in my django app, by overriding Gunicorn's post_fork: import os from opentelemetry import trace from opentelemetry.exporter.otlp.proto.http.trace_exporter import \ OTLPSpanExporter from opentelemetry.instrumentation.django import DjangoInstrumentor from opentelemetry.instrumentation.logging import LoggingInstrumentor from opentelemetry.sdk.resources import Resource from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor def post_fork(server, worker): """Configue OpenTelemetry traces.""" os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'solutions.settings') resource = Resource.create(attributes={ "service.name": "solutions" }) trace.set_tracer_provider(TracerProvider(resource=resource)) span_processor = BatchSpanProcessor( OTLPSpanExporter(endpoint="http://grafana-agent-traces.prometheus:4318/v1/traces") ) trace.get_tracer_provider().add_span_processor(span_processor) DjangoInstrumentor().instrument() LoggingInstrumentor().instrument(set_logging_format=True) Traces are successfully exported but are also printed to console. How to avoid that? I have tried to add this, but it has no effect: logging.getLogger("opentelemetry").setLevel(logging.WARNING) -
after changing a user password then the session got flushed
when i changed user password the user becomes anonymous means the session get flushed after.How to solve this issue. Why this happens when the password changed. the url has given below path('psswdReset/',psswdReset, name = 'psswd_reset') def psswdReset(request): if request.method == 'POST': new_psswd = request.POST.get('new_psswd') psswd = request.POST.get('psswd') password_is_correct = check_password(psswd, request.user.password) if password_is_correct: user = CustomUser.objects.get(id=request.user.id) user.password = make_password(new_psswd) user.save() messages.success(request, 'Password changed successfully!') return render(request,'User/userPsswdReset.html',{}) print('anonymouse', request.user.is_anonymous) return render(request,'User/userPsswdReset.html',{}) -
request.user always returns Anonymous user, even though request.META gives proper token when decoded in JWT it gives user_id
settings.py MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'corsheaders.middleware.CorsMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] AUTHENTICATION_BACKENDS = [ 'django.contrib.auth.backends.ModelBackend', "allauth.account.auth_backends.AuthenticationBackend", ] views.py def google_login_view(request): if not request.user.email: return HttpResponse("An email is required to login.", status=400) email_from_google = request.user.email try: user = User.objects.get(email=email_from_google, is_active=True) user_details = UserDetails.objects.get(email=email_from_google, is_active=True) except (User.DoesNotExist, UserDetails.DoesNotExist): return HttpResponse("User not found. Please register.", status=404) # generate_token_pair is defined in tokens.py access_token, refresh_token, access_token_exp, refresh_token_exp = generate_token_pair(user) current_time = datetime.now() access_token_expiration_timestamp = access_token_exp.timestamp() access_token_expiration_datetime = datetime.fromtimestamp(access_token_expiration_timestamp) # Check if the access token has expired if access_token_expiration_datetime < current_time: # Check if the refresh token is still valid if refresh_token_exp >= current_time: with transaction.atomic(): new_access_token, _, new_access_token_exp, _ = generate_token_pair(user) user.access_token = new_access_token user.save() # Log the user back in with the new access token login(request, user, backend='allauth.socialaccount.providers.google.backends.GoogleOAuth2') redirect_url = f"{settings.FRONTEND_REDIRECT_URL}?access_token={new_access_token}" return redirect(redirect_url) else: logout(request) # Ensure the user is logged out return redirect(settings.LOGIN_URL) else: login(request, user, backend='allauth.socialaccount.providers.google.backends.GoogleOAuth2') redirect_url = f"{settings.FRONTEND_REDIRECT_URL}?access_token={access_token}" return redirect(redirect_url) @authentication_classes([JSONWebTokenAuthentication]) @api_view(['POST']) def send_client_feedback_email(request, project_id): try: pass I have above setup Now when I Add PDB set trace in google login view I get a request.user of current logged in user. Now when I try to use my POST METHOD and when I add request.user It returns Anonymous …