Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Pros & Cons of Django-ninja over fastapi [closed]
Coming from Django, I like the "included batteries" of Django like the built in user authentication, admin, etc. But, soemtimes Django and DRF feel a bit much, so I am now trying FastAPI (but not in a production code, yet.) I have seen Django-ninja recommended both on this site and other sites. In theory, it sounds like it's the best of both worlds. But I would like to hear people's experiences, especially if there is anyone who has used both for real projects. What worked really well? And, what issues did you run into? What features did you wish you had (that were in the other)? Thanks for your time. -
How to debug Django views.py?
I am having some issues trying to parse json data from Django views into javascript. I am getting the following error: script.js:29 Error parsing JSON: SyntaxError: Expected property name or '}' in JSON at position 1. I have serialised my data using the built in Django function DjangoJSONEncoder. What im after is a way to see what is being returned by the view. How would i debug this? def customer_booking(request): if request.method == 'POST': customer_form = CustomerForm(request.POST, prefix='customer') booking_form = BookingForm(request.POST, prefix='booking') if customer_form.is_valid() and booking_form.is_valid(): customer = customer_form.save(commit=False) customer.user = request.user customer.save() booking = booking_form.save(commit=False) booking.customer = customer if limit_no_attendees(booking.booking_date, booking.booking_time, booking.number_attending): booking.save() customer_form = CustomerForm() booking_form = BookingForm() messages.add_message(request, messages.SUCCESS, 'Your booking request was successful, please visit your profile to view the status!') else: messages.add_message(request, messages.ERROR, 'Date and time unavailable!') else: customer_form = CustomerForm(prefix='customer') booking_form = BookingForm(prefix='booking') unavailable_booking_dates = unavailable_dates() context = { 'customer_form': customer_form, 'booking_form': booking_form, 'unavailable_dates': unavailable_booking_dates, } return render(request, 'booking.html', context) var dates = JSON.parse("{{ unavailable_dates|safe }}"); $('#datepicker').datepicker ({ beforeShowDay: function (date) { var string = jQuery.datepicker.formatDate('dd-mm-yy', date); if ($.inArray(string, dates) != -1) { return [true, 'highlighted-date']; } else { return [true, '']; } }, }); -
Django-Cms Multilanguage Website "RecursionError at /tr/ maximum recursion depth exceeded" Error
I need help to solve the error in my multilanguage website error RecursionError at /tr/ maximum recursion depth exceeded" Request Method: GET Request URL: http://eldemmedya.com.tr/tr/ Django Version: 4.2 Exception Type: RecursionError Exception Value: maximum recursion depth exceeded Exception Location: /home/ytsejam/.virtualenvs/eldemproduction/lib/python3.11/site-packages/asgiref/local.py, line 81, in _get_storage Raised during: cms.views.details Python Executable: /home/ytsejam/.virtualenvs/eldemproduction/bin/python Python Version: 3.11.3 Python Path: ['/home/ytsejam/.virtualenvs/eldemproduction/bin', '/home/ytsejam/public_html/eldemmedya', '/usr/lib/python311.zip', '/usr/lib/python3.11', '/usr/lib/python3.11/lib-dynload', '/home/ytsejam/.virtualenvs/eldemproduction/lib/python3.11/site-packages'] Error during template rendering In template /home/ytsejam/public_html/eldemmedya/eldemmedya/templates/base.html, error at line 25 maximum recursion depth exceeded 15 <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}"> 16 <link rel="stylesheet" href="{% static 'css/fontawesome.min.css' %}"> 17 <link rel="stylesheet" href="{% static 'css/animate.css' %}"> 18 <link rel="stylesheet" href="{% static 'css/swiper.min.css' %}"> 19 <link rel="stylesheet" href="{% static 'css/odometer.css' %}"> 20 <link rel="stylesheet" href="{% static 'css/style.css' %}"> 21 <link rel="stylesheet" href="{% static 'css/custom.css' %}"> 22 {% render_block "css" %} 23 </head> 24 <body class="cs_dark"> 25 {% cms_toolbar %} I have basically copied the urls.py in the documents admin.autodiscover() # urlpatterns = [ # path("i18n/", include("django.conf.urls.i18n")), # ] urlpatterns = i18n_patterns( re_path(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog'), ) urlpatterns += staticfiles_urlpatterns() # note the django CMS URLs included via i18n_patterns urlpatterns += i18n_patterns( re_path(r'^admin/', admin.site.urls), re_path(r'^sitemap\.xml$', sitemap, {'sitemaps': {'cmspages': CMSSitemap}}), re_path(r'^', include('cms.urls')), ) in the settings I have added LANGUAGE_CODE = 'en' LANGUAGES … -
Getting logging error while using the custom logger class
I have developed a custom logger class known as ClassNameLogger, which includes an additional parameter called 'className'. I have integrated this specialized logger class into the settings.py by utilizing the logger.setLoggerClass(ClassNameLogger) method. Consequently, when I initiate the server, it successfully commences; however, I am encountering a logging error simultaneously.The error says: --- Logging error --- Traceback (most recent call last): File "C:\Users\z004mtzy\AppData\Local\Programs\Python\Python310\lib\logging\__init__.py", line 440, in format return self._format(record) File "C:\Users\z004mtzy\AppData\Local\Programs\Python\Python310\lib\logging\__init__.py", line 458, in _format return self._fmt.format(**values) KeyError: 'className' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\z004mtzy\AppData\Local\Programs\Python\Python310\lib\logging\handlers.py", line 73, in emit if self.shouldRollover(record): File "C:\Users\z004mtzy\AppData\Local\Programs\Python\Python310\lib\logging\handlers.py", line 196, in shouldRollover msg = "%s\n" % self.format(record) File "C:\Users\z004mtzy\AppData\Local\Programs\Python\Python310\lib\logging\__init__.py", line 943, in format return fmt.format(record) File "D:\ws1\hmi.dashboard\dashboard\custom_logging.py", line 18, in format File "C:\Users\z004mtzy\AppData\Local\Programs\Python\Python310\lib\logging\__init__.py", line 681, in format s = self.formatMessage(record) File "C:\Users\z004mtzy\AppData\Local\Programs\Python\Python310\lib\logging\__init__.py", line 650, in formatMessage return self._style.format(record) File "C:\Users\z004mtzy\AppData\Local\Programs\Python\Python310\lib\logging\__init__.py", line 442, in format raise ValueError('Formatting field not found in record: %s' % e) ValueError: Formatting field not found in record: 'className' Here is my custom_logging.py: import logging class ClassNameLogger(logging.Logger): def __init__(self, name): super().__init__(name) def _log(self, level, msg, args, exc_info=None, extra=None, stack_info=False): if extra is None: extra = {} # Automatically add the class name to … -
Seemingly no connection to Nginx but website error page successfully loads
I have an issue going on that has me completely stumped. I am running a Django Application through Nginx and UWSGI, and a DNS that runs through cloudflare. When I go the website, I receive the proper website error page (the one set in Django). However, there are no logs anywhere, not in Django, UWSGI, or Nginx (even regarding access!). I have no idea how this is routing yet failing to log anything and have no idea where to look to change anything. Just to reiterate: server: Nginx through UWSGI using a python virtual env | App type: Django | DNS provider: Cloudflare | Logs: None found, but should be propagating if things error | Error page: Django applications custom error Will gladly post info or logs if someone points me towards where I should look. We have had this site working properly on a different server using a different OS version (Debian stretch versus our current debian bullseye). Folder names etc have all been copied from there. ** We are running a nonstandard python version, but all research has shown that this should be fine as long as our Virtualenv is setup with the right python version. -
how to connect two model with a common value present in both the models in my view.py and show the merge data in template file in django
I have a model called eligibility check. In that model I have added institute code. I have another model called register, there i have institute name as well as institute code. I want to add a condition so that, all my entries saved in eligibility check get displayed in a table format in my template file along with institute name. I don't have institute name in eligibility check model, so i want to fetch it from register model with a common value institute code , which i have in both models. I tried this, but getting error of The QuerySet value for an exact lookup must be limited to one result using slicing. I want to have a structure of my template like this I have institute code in eligibility table and institute name, institute code in register table. so i want to merge both table with the common parameter which is institute code -
How do I edit commands and see the history in Python/Django shell?
I'm using Django 3 with Python 3.10. I have this dependency bpython==0.21 I use the python shell like so python manage.py shell Is there a way to have a history of the shell commands so that I can access previous commands using the up arrow? Right now, when I press the up arrow I get >>> ^[[A Similarly, if I try an edit a bad command in the shell by using the left arrow to position my cursor over the bad error, I get this weird chararacter sequence ... >>> my_obj = MyObjectt.objects.get(abbrev='ABC')^[[D How do I get a smoother shell experience? -
Django Superuser Permission Issue: "You don’t have permission to view or edit anything" please help! Thankyou
I'm encountering an issue in my Django project where I'm unable to access the admin site as a superuser. When I try to log in as a superuser, I receive the error message: "You don’t have permission to view or edit anything." I've followed the standard steps for creating a superuser and configuring my custom user model, but I can't figure out why this permission issue is occurring. Django administration: Site Administration, You don’t have permission to view or edit anything.* ---------------------------------* for fresh start* deleted migrations deleted db.sqlite3 powershell-> >>Python manage.py makemigrations Migrations for 'auth_app': auth_app\migrations\0001_initial.py - Create model CustomUser >>Python manage.py migrate Operations to perform: Apply all migrations: admin, auth, auth_app, contenttypes, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0001_initial... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying auth_app.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying sessions.0001_initial... OK >> python manage.py createsuperuser Email: helloadmin@mail.com Name: helloname Password: Password (again): This password is too short. It must contain at least 8 characters. This password is … -
How to filter objects by foreign key object in Django with filterset_fields?
What I want to do is simply this: Models.py class Business(AbstractUser, PermissionsMixin): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) email = models.CharField(max_length=255, unique=True) username = models.CharField(max_length=40, unique=True, default='undefinedusername') location = models.CharField(max_length=85, unique=True,null=True,blank=True) class Food(models.Model): id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='foods') name = models.CharField(max_length=50, null=True, blank=True) Views.py class FoodByLocationViewSet(viewsets.ModelViewSet): permission_classes = (IsAuthenticated,) queryset = Article.objects.all().order_by('-average_rating') serializer_class = ArticleSerializer filter_backends = [filters.SearchFilter,DjangoFilterBackend] pagination_class = StandardResultsSetPagination filterset_fields = ['name'] I can search foods by its name with using filterset_fields = ['name'] I just want to filter foods by Business' (Parents) location object. How can I do it? -
After creating virtual env the script is not getting activated. Help me out
Project1\django-todo\demoEnv\Scripts\activate.ps1 cannot be loaded because running scripts is disabled on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. At line:1 char:1 demoEnv/Scripts/activate + CategoryInfo : SecurityError: (:) [], PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess As I am using windows I was going with the command demoEnv/bin/activate, but getting above error -
problem with django after ondrive file movving
does anyway could help me with below ? I tried all i found already and no luck.... Basically some time ago my company enforces use onedrive and all files where moved from my /Desktop to /One Drive/Desktop ... i figured out all how to change all thing to get Django working and python manage runserver works fine but when i try to migrate i got something like below...i am using Pycharm and maybe something in settings of Pycharm is still related with old files location ? venv is using my new onedrive folder but errors in screen are related with my old folder location, really appreciate of any help to fix that problem Pycharm error Checked all Django settings related fixes but no luck for now -
Aggregate not working in prefetched queryset in Django
I have a query that I am trying to aggregate values so I can calculate balances more quickly than querying multiple times to get the values needed. Overall I simply want to be able to run: header_accounts = custom_report.account_tree_header.all() for header_account in header_accounts: for regular_account in header_account.associated_regular_account_tree_accounts.all(): gl_account = regular_account.associated_account_from_chart_of_accounts gl_entries = gl_account.range_gl # range entries # this does not work below... prior_credit = gl_account.old_gl['prior_credit_amount'] prior_debit = gl_account.old_gl['prior_debit_amount'] I get an AttributeError 'dict' object has no attribute '_add_hints' How can I do this? custom_report = AccountTree.objects.select_related().prefetch_related( 'account_tree_total', 'account_tree_regular', Prefetch('account_tree_header', queryset=AccountTreeHeader.objects.select_related( 'associated_account_from_chart_of_accounts', 'associated_total_account_tree_account__associated_account_from_chart_of_accounts' ).prefetch_related( 'associated_regular_account_tree_accounts', Prefetch('associated_regular_account_tree_accounts__associated_account_from_chart_of_accounts__general_ledger', queryset=GeneralLedger.objects.select_related( 'transaction_code', 'accounts_payable_line_item', 'accounts_payable_line_item__accounts_payable_entry', 'accounts_payable_line_item__property', 'accounts_payable_line_item__account', 'accounts_payable_line_item__book', 'accounts_payable_line_item__generated_check', 'journal_line_item', 'journal_line_item__journal_entry', 'journal_line_item__payment_id__code', 'journal_line_item__charge_id__code', 'journal_line_item__payment_id__balance', 'journal_line_item__charge_id__balance', 'journal_line_item__payment_id__balance__unit', 'journal_line_item__charge_id__balance__unit', 'journal_line_item__payment_id__balance__unit__building', 'journal_line_item__charge_id__balance__unit__building', 'journal_line_item__property', 'journal_line_item__account', 'journal_line_item__book', ).filter(Q( accounts_payable_line_item__property__pk__in=property_pks, journal_line_item__property__pk__in=property_pks, _connector=Q.OR, ), date_entered__date__gte=start_date, date_entered__date__lte=end_date).order_by('date_entered'), to_attr='range_gl'), Prefetch('associated_regular_account_tree_accounts__associated_account_from_chart_of_accounts__general_ledger', queryset=GeneralLedger.objects.select_related( 'transaction_code', 'accounts_payable_line_item', 'accounts_payable_line_item__accounts_payable_entry', 'accounts_payable_line_item__property', 'accounts_payable_line_item__account', 'accounts_payable_line_item__book', 'accounts_payable_line_item__generated_check', 'journal_line_item', 'journal_line_item__journal_entry', 'journal_line_item__payment_id__code', 'journal_line_item__charge_id__code', 'journal_line_item__payment_id__balance', 'journal_line_item__charge_id__balance', 'journal_line_item__payment_id__balance__unit', 'journal_line_item__charge_id__balance__unit', 'journal_line_item__payment_id__balance__unit__building', 'journal_line_item__charge_id__balance__unit__building', 'journal_line_item__property', 'journal_line_item__account', 'journal_line_item__book', ).filter(Q( accounts_payable_line_item__property__pk__in=property_pks, journal_line_item__property__pk__in=property_pks, _connector=Q.OR, ), date_entered__date__lte=start_date).aggregate(prior_credit_amount=Sum('credit_amount'), prior_debit_amount=Sum('debit_amount')), to_attr='old_gl'), # TODO: GRAB THE ENTRIES FROM PRIOR SO I DO NOT HAVE TO CALL SO MANY SLOW QUERIES LATER )), ).get(pk=custom_report.pk) -
Chatterbot- multiple custom adapters don't work
I'm using the django integration. settings.py CHATTERBOT = { 'name': 'chatbot0', 'storage_adapter': "chatterbot.storage.SQLStorageAdapter", 'logic_adapters': [ 'chatterbot.logic.BestMatch', #custom adapters 'chatbot.adapters.adapter_1', 'chatbot.adapters.adapter_2', ] } But adapter_2 doesnt work unless I remover adapter_1, and vise versa. What is the problem? -
Django tests fails if I add a Foreign Key to custom Default User Model even if referenced data table should be prepulated during migration
I Have a default user Model class User(models.model) nation = ForeignKey(Nation, on_delete=CASCADE, related_name='users', default='en', null=True) The initial migration for Nation model is prepulated in this way: def populate_table(apps, schema_editor): nation_model = apps.get_model('nations', 'Nation') nation_model.objects.create(name=en, ....) class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( .... ), migrations.RunPython(populate_table) ] This totally works fine in normal runs, but tests fail. This is my logs: Synchronizing apps without migrations: Creating tables... Creating table auth_permission Creating table auth_group Creating table nations_nation .... Running migrations: No migrations to apply. Traceback (most recent call last): No migrations to apply. Traceback (most recent call last): ... Traceback (most recent call last): ... File "/python3.10/site-packages/guardian/management/__init__.py", line 32, in create_anonymous_user User.objects.using(kwargs['using']).get(**lookup) File "/python3.10/site-packages/django/db/models/query.py", line 435, in get raise self.model.DoesNotExist( mymodule.models.User.DoesNotExist: User matching query does not exist. During handling of the above exception, another exception occurred: DETAIL: Key (nation_id)=(en) is not present in table "nations_nation". I tried to put a breakpoint where User.save() is called, and there I tested if some nations exist in the database, and I got nothing. So to me, it is clear that Django is trying to create a user, before running the Nation migration -
How can I access properties of a foreign key field in django?
In my Django application, I have 2 models: Product and Image. A product can have many images and an image can only belong to a single product. I want to be able to create a sub-folder for the images of a product with the name of the product itself when images of a product are uploaded. So, in the Image model, I need to access the title of the product. Here is my code: class Product(models.Model): title = models.CharField(max_length=255) slug = models.SlugField(unique=True, blank=True, allow_unicode=True) class Image(models.Model): name = models.CharField(max_length=255, null=True, blank=True) product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='images') image = models.ImageField(upload_to=f'product_images/{product.title}/') In the Image model, I have an "image" field which is of type ImageField in which I want to get the title of the product. I get the following error: 'ForeignKey' object has no attribute 'title' How can i access the title of the product inside the Image model? Thanks -
How to overcome "Object of type date is not JSON serializable"?
I am building a booking system, currently i am trying to have unavailable dates displayed in red on a jQuery datepicker. I have composed a view that gets the unavailable dates and saves this to an array. When trying to parse into JavaScript I am getting the following error: "Object of type date is not JSON serializable". I have seen this answered on here, however the solutions I have tried do not seem to be working. In particular I have tried the answers given here: How to overcome "datetime.datetime not JSON serializable"? def unavailable_dates(): confirmed_bookings = Booking.objects.filter(booking_status=1) bookings_max_attendees = confirmed_bookings.values( 'booking_date', 'booking_time').annotate( attendees=Sum('number_attending')).filter(attendees=20) unavailable_dates = [] for booking in bookings_max_attendees: unavailable_dates.append(booking['booking_date']) return unavailable_dates # https://stackoverflow.com/questions/77218397/how-to-access-instances-of-models-in-view-in-order-to-save-both-forms-at-once?noredirect=1&lq=1 def customer_booking(request): if request.method == 'POST': customer_form = CustomerForm(request.POST, prefix='customer') booking_form = BookingForm(request.POST, prefix='booking') if customer_form.is_valid() and booking_form.is_valid(): customer = customer_form.save(commit=False) customer.user = request.user customer.save() booking = booking_form.save(commit=False) booking.customer = customer if limit_no_attendees(booking.booking_date, booking.booking_time, booking.number_attending): booking.save() customer_form = CustomerForm() booking_form = BookingForm() messages.add_message(request, messages.SUCCESS, 'Your booking request was successful, please visit your profile to view the status!') else: messages.add_message(request, messages.ERROR, 'Date and time unavailable!') else: customer_form = CustomerForm(prefix='customer') booking_form = BookingForm(prefix='booking') unavailable_booking_dates = unavailable_dates() dataJSON = json.dumps(unavailable_booking_dates) context = { 'customer_form': customer_form, 'booking_form': booking_form, 'data': … -
has_object_permission method doesn't work Django REST Framework
I want to check in my ModelViewSet if user can create the invitation for the other user to his company. I have 4 models: # Abstract model TimeStampedModel class TimeStampedModel(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: # abstract = True to enable models inherit from TimeStampedModel abstract = True # Custom User model class User(AbstractUser, TimeStampedModel): # Make these fields not to be null email = models.EmailField(unique=True, null=False, blank=False) first_name = models.CharField(max_length=30, blank=False, null=False) last_name = models.CharField(max_length=30, blank=False, null=False) image_path = models.ImageField(upload_to='img', default='profile-pic.webp') # Assing base user manager for admin panel objects = CustomUserManager() USERNAME_FIELD = "username" REQUIRED_FIELDS = ['email', 'first_name', 'last_name'] # Create your models here. class Company(TimeStampedModel): VISIBILITY_CHOICES = ( ('hidden', 'Hidden'), ('visible', 'Visible for all'), ) owner = models.ForeignKey(User, on_delete=models.CASCADE) name = models.CharField(max_length=50, blank=False, null=False, unique=True) description = models.TextField(blank=False, null=False) visibility = models.CharField(max_length=15, choices=VISIBILITY_CHOICES, default='visible') class Meta: verbose_name = "Company" verbose_name_plural = 'Companies' # Plural naming def __str__(self): return self.name # Interactions between users and companies class CompaniesUsers(TimeStampedModel): STATUS_CHOICES = ( ('pending', 'Pending'), ('accepted', 'Accepted'), ('revoked', 'Revoked'), ('rejected', 'Rejected'), ) company = models.ForeignKey(Company, on_delete=models.CASCADE) user = models.ForeignKey(User, on_delete=models.CASCADE) status = models.CharField(default='pending', choices=STATUS_CHOICES) def __str__(self): return f"{self.company} - {self.user} - {self.status}" I created the custom permission … -
Pytest causes 'invalid object name' error while setting up test databases
I'm trying to use Pytest to run unit tests on a Django application, but I'm having trouble interacting with Django's database models. A majority of the models in my application have the managed=False value set, since they're connected to external DBs. I'm using a script that sets the them to managed=True when running the test, because I was having issues with the test DBs being created without any contents. The problem is that whenever I run a test that needs DB access and the system starts creating test databases, it throws an error as soon as it hits one of the tables whose model has been changed to managed=True. Looking at the verbose traceback from Pytest, it seems like the system is trying to query the test database for the entire content of the table in question, and failing because the table doesn't exist. This only happens when one or more models for external have been changed to managed=True, either manually or using the script mentioned earlier. If I don't change any of the models, the test DB creation process works without errors, but the resulting test DBs don't contain any tables. The one model in the application which does … -
Dynamically customize django admin columns in model view
Follow up to this quetsion: Dynamically customize django admin columns? How to do it with django 4.2 lib django-xadmin doesnt work with django 4.2 This model for example `class Question(models.Model): question_text = models.CharField(max_length=200) pub_date = models.DateTimeField("date published") choice_text = models.CharField(max_length=200, default='choice') votes = models.IntegerField(default=0)` and admin page `class QuestionAdmin(admin.ModelAdmin): list_display = ['question_text', 'pub_date', 'choice_text', 'votes'] admin.site.register(Question, QuestionAdmin)` -
Nginx not passing response body from Server 1 to Server 2 when 401 status code with new access token is returned
Question: I'm currently working on a ReactJS application that interacts with multiple backends, including an authentication server using Node.js, another backend using Node.js, and a Django server. Nginx is used to manage requests and distribute them between the front end and these backends. The problem I'm facing arises when I call a backend with an expired access token. In such cases, the authentication server regenerates a new access token and sends it back to the front end. The front end should then make a new request to the same API with this new access token. The challenge lies in how Nginx handles the response from Server 1 (authentication with Node.js) when it is called indirectly from Server 2 (Django). When Server 1 returns a 401 status code along with a new access token in the response body, Nginx doesn't pass this response body to Server 2 or, subsequently, to the frontend. Here's a detailed breakdown of the scenario that doesn't work as expected: Scenario 1 (Problematic): Frontend call to Server 2 (Django) via Nginx, but it has to pass through Server 1 (authentication with Node.js) to check the access token first: Front end calls Server 2 via NGINX. NGINX redirects … -
why can't django return a plain text response with a link to download the file?
I have in Django eksport functionality, in the custom admin. So, when requesting to get everything from the database, I make an ORM query of the necessary sample - the query is heavy, but it works fine, I get the data at once, no more trips to the database. Then comes the functionality of working with this data, shoved everywhere there, processed, and finally shoved into the dataframe pandas and written to a CSV file, and saved in the directory (before that immediately tried to give the user), the file weighs about 280mb. So, what is the actual problem, the real file is saved quickly relatively, but the response to the user can come from half an hour, just with a link to download the file. def save_data_in_csv_file(df_jewelry): """write data Attributes: - df_jewelry: data frame pandas +- 1_300_000 rows. """ download_folder = os.path.join(os.path.dirname(__file__), 'download_file') if not os.path.exists(download_folder): os.makedirs(download_folder) file_path = os.path.join(download_folder, 'output.csv') with open(file_path, 'wb') as file: df_jewelry.to_csv(file, index=False) download_link = ( 'path_to_file' ) response_data = { 'message': 'File save!', 'download_link': download_link, } response = Response(response_data, status=201) return response This is a view, it runs the main script, and from the code above it just gets the response, and just … -
Deserialization/Serialization DRF
I am interested in understanding which pattern of the below is more aligned with the SOLID principles. Say We have a class CreateView(generics.CreateAPIView) in DRF. Option 1: Single Serializer for serialization/deserialization from rest_framework import serializers class MySerializer(serializers.Serializer): field1 = serializers.CharField()) def to_representation(self, instance): return { 'field1': instance.field1, } Option 2: Create 2 classes MySerializer ( serialize the response I want to create and pass to the response.data ) MyDeserializer ( deserialise my data / perform sanitisation/validation of the incoming request.data ) -
issue with deploying django application with gunicorn, supervisorctl
I'm deploying django application using gunicorn, supervisorctl and nginx but I'm getting the below error in nginx log file 172.69.178.94 - - [12/Oct/2023:11:18:52 +0000] "POST /api/notify/send-notification HTTP/1.1" 502 166 "-" "PostmanRuntime/7.33.0" 2023/10/12 11:24:05 [crit] 551667#551667: *1 connect() to unix:/home/pankaj/cn_notification/cn_notification/cn_notify.sock failed (13: Permission denied) while connecting to upstream, client: 172.69.178.95, server: notify.codingnap.com, request: "POST /api/notify/send-notification HTTP/1.1", upstream: "http://unix:/home/pankaj/cn_notification/cn_notification/cn_notify.sock:/api/notify/send-notification", host: "notify.codingnap.com" 172.69.178.95 - - [12/Oct/2023:11:24:05 +0000] "POST /api/notify/send-notification HTTP/1.1" 502 166 "-" "PostmanRuntime/7.33.0" My supervisor config file [program:cn_notify] directory=/home/pankaj/cn_notification/cn_notification command=/home/pankaj/cn_notification/notify-venv/bin/gunicorn --workers 1 --bind unix:/home/pankaj/cn_notification/cn_notification/cn_notify.sock cn_notify.wsgi:application autostart=true autorestart=true stderr_logfile=/var/log/cn_notify.log stdout_logfile=/var/log/cn_notify.log user=pankaj group=www-data [group:guni] programs:cn_notify and nginx config file server { listen 80; server_name notify.codingnap.com; error_log /var/log/nginx/cn_notify_log; access_log /var/log/nginx/cn_notify_log; location = /favicon.ico { access_log off; log_not_found off; } location /static/ { root /home/pankaj/cn_notification/cn_notification; } location / { include proxy_params; proxy_pass http://unix:/home/pankaj/cn_notification/cn_notification/cn_notify.sock; } } What could be the possible way to solve this issue 🙂 -
How can I deploy the django web application on apache in windows?
I want to deply the django web application on apache in windows. Howw can I do that step by step? I have installed python and apache on windows. How can I config the apache to serve django web app? I deploy django web app on local host with out apache but i know that its not secure to server users on the web without web server. -
Permission class method def has_object_permission is not called
The problem is any user is able to delete the comment created by the other user, even i created and added the custom permission.py file, i also checked that def has_object_permission method is not running i tried to print "print statement" on terminal. I want that only owner of comment can delete it's own comment and owner of the Post can delete anyone's comment. my view: class CommentPostApiView(generics.ListCreateAPIView, generics.DestroyAPIView,generics.GenericAPIView): serializer_class = serializers.CommentPostSerializer authentication_classes = (TokenAuthentication,) permission_classes = [IsAuthenticated, IsCommentOwnerOrPostOwner] def get_queryset(self): post_id = self.kwargs.get('post_id') return models.CommentPost.objects.filter(post__pk=post_id, reply_to_comment__isnull=True) @transaction.atomic def create(self, request, *args, **kwargs): post_id = self.kwargs.get('post_id') parent_comment_id = self.kwargs.get('parent_comment_id') user = self.request.user content = request.data.get('content') try: post = models.PicPost.objects.select_for_update().get(pk=post_id) if parent_comment_id is not None: reply_to_comment = models.CommentPost.objects.select_for_update().get(pk=parent_comment_id) comment_post = models.CommentPost(post=post, commenter=user, content=content, reply_to_comment=reply_to_comment) else: comment_post = models.CommentPost(post=post, commenter=user, content=content) comment_post.save() models.PicPost.objects.filter(pk=post_id).update(comments_count=F('comments_count')+1) except models.PicPost.DoesNotExist: raise ValidationError("Post does not exist.") except models.CommentPost.DoesNotExist: raise ValidationError("Parent comment does not exist.") return Response({"detail": "Comment added successfully."}, status=status.HTTP_201_CREATED) @transaction.atomic def destroy(self, request, *args, **kwargs): comment_id = self.kwargs.get('parent_comment_id') try: comment = models.CommentPost.objects.select_for_update().get(pk=comment_id) post_id = comment.post.id comment.delete() models.PicPost.objects.filter(pk=post_id).update(comments_count=F('comments_count')-1) except models.CommentPost.DoesNotExist: raise ValidationError("This comment does not exists") return Response({"detail": "Comment deleted successfully."}, status=status.HTTP_201_CREATED) **Custom Permission file** class IsCommentOwnerOrPostOwner(permissions.BasePermission): """Allow owners of comment, reply or post to delete them""" def …