Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django CSRF verification failed with nginx reverse proxy
I am desperate. I have a https server that redirects traffic to my local https server. My university runs a reverse proxy that forwards the requests my nginx: The local https server is only visible from the vpn. They do that so that I do not have to care about the keys management and I can just plug some generic ones. When I on the VPN the external server works as expected but when I am out of the VPN the external server returns CSRF cookie not set. I have checked basically everything and read all the CSRF verification failed. Request aborted. posts here. The url in the external server is (anonymized): https://project.uni.edu/ The url of the internal server (anonymized): https://project_internal.uni.edux/ The configuration of the nginx: server { listen 443 ssl; server_name project.uni.edu localhost; ssl_certificate /code/staticfiles/cert/project_name.pem; ssl_certificate_key /code/staticfiles/cert/project_name_key.pem; location / { proxy_pass http://web:8000; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_redirect off; } location /static/ { alias /code/staticfiles/; } location /media/ { alias /code/mediafiles/; } } My settings in the django file are: CSRF_TRUSTED_ORIGINS = ["https://project.uni.edu/","https://project_internal.uni.edux/"] # SESSION_COOKIE_SECURE= True CSRF_COOKIE_HTTPONLY = False SESSION_COOKIE_DOMAIN= "project_internal.uni.edux" -
How to access model's verbose name in a serializer?
I want to access verbose name of models to put it as a key in serializer. But I can't find a way to do it. My models are: class ProductCategory(models.Model): name = models.CharField(max_length=150, unique=True) created_at = models.DateTimeField(default=timezone.now) modified_at = models.DateTimeField(default=timezone.now) def __str__(self): return self.name class DeviceTypeCategory(ProductCategory): product_category = models.ForeignKey(ProductCategory, on_delete=models.CASCADE, related_name="device_types") class Meta: verbose_name = _("Device type") verbose_name_plural = _("Device types") class DeviceBrandCategory(ProductCategory): product_category = models.ForeignKey(ProductCategory, on_delete=models.CASCADE, related_name="device_brands") class PartTypeCategory(ProductCategory): product_category = models.ForeignKey(ProductCategory, on_delete=models.CASCADE, related_name="part_types") And my serializer: class ProductCategorySerializer(serializers.ModelSerializer): device_types = serializers.StringRelatedField(many=True) device_brands = serializers.StringRelatedField(many=True) part_types = serializers.StringRelatedField(many=True) class Meta: model = ProductCategory fields = ('name', 'device_types', 'device_brands', 'part_types') Any suggestions would help. I would also be glad to hear out other ideas on how to create categories model. I've tried django-mptt, but I need product to belong to multiple subcategories. The django-polymorphic-mptt could have help. But I couldn't find proper documentation. -
What did mean by AttributeError at /login_user/?
My target is to get all the products a user added to the cart, that's why I decided to fetch the ShopingCart model from the context processor. And I added it to the context processor, and it worked well. But the problem is when I try to log out, then I get an error. Where did the actual problem occur? help me😢... models.py: class ShopingCart(models.Model): User = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='UserShoppingCartRelatedName',on_delete=models.CASCADE) Product = models.ForeignKey(Products, related_name='ShoppingCartRelatedName',on_delete=models.CASCADE) context_processors: def ShoppingCart(request): return {"ShoppingCart":request.user.UserShoppingCartRelatedName.all()} error: AttributeError at /login_user/ 'AnonymousUser' object has no attribute 'UserShoppingCartRelatedName' Request Method: GET Request URL: http://127.0.0.1:8000/login_user/ Django Version: 4.0.4 Exception Type: AttributeError Exception Value: 'AnonymousUser' object has no attribute 'UserShoppingCartRelatedName' Exception Location: D:\1_WebDevelopment\17_Ecomerce Website\ecomerce site\env\lib\site-packages\django\utils\functional.py, line 259, in inner Python Executable: D:\1_WebDevelopment\17_Ecomerce Website\ecomerce site\env\Scripts\python.exe Python Version: 3.9.5 Python Path: ['D:\\1_WebDevelopment\\17_Ecomerce Website\\ecomerce site', 'c:\\users\\dcl\\appdata\\local\\programs\\python\\python39\\python39.zip', 'c:\\users\\dcl\\appdata\\local\\programs\\python\\python39\\DLLs', 'c:\\users\\dcl\\appdata\\local\\programs\\python\\python39\\lib', 'c:\\users\\dcl\\appdata\\local\\programs\\python\\python39', 'D:\\1_WebDevelopment\\17_Ecomerce Website\\ecomerce site\\env', 'D:\\1_WebDevelopment\\17_Ecomerce Website\\ecomerce ' 'site\\env\\lib\\site-packages'] Server time: Tue, 09 Aug 2022 11:48:23 +0000 -
django.core.exceptions.ValidationError: ['“1” is not a valid UUID.']
Whenever I am running the server I am getting the error django.core.exceptions.ValidationError: ['“1” is not a valid UUID.'] I have used UUID v4 to change the user id to a random id. But my code is not working. I have deleted and re-migrated migrations many times. But no improvement at all? how can I fix the probelm? #models.py from django.db import models from django.contrib.auth.models import AbstractBaseUser,PermissionsMixin,BaseUserManager import uuid class CustomUserManager(BaseUserManager): def _create_user(self, email, password, first_name, last_name, mobile, **extra_fields): if not email: raise ValueError("Email must be provided") if not password: raise ValueError('Password is not provided') user = self.model( email = self.normalize_email(email), first_name = first_name, last_name = last_name, mobile = mobile, **extra_fields ) user.set_password(password) user.save(using=self._db) return user def create_user(self, email, password, first_name, last_name, mobile, **extra_fields): extra_fields.setdefault('is_staff',True) extra_fields.setdefault('is_active',True) extra_fields.setdefault('is_superuser',False) return self._create_user(email, password, first_name, last_name, mobile, password, **extra_fields) def create_superuser(self, email, password, first_name, last_name, mobile, **extra_fields): extra_fields.setdefault('is_staff',True) extra_fields.setdefault('is_active',True) extra_fields.setdefault('is_superuser',True) return self._create_user(email, password, first_name, last_name, mobile, **extra_fields) # Create your User Model here. class User(AbstractBaseUser,PermissionsMixin): # Abstractbaseuser has password, last_login, is_active by default id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) email = models.EmailField(db_index=True, unique=True, max_length=254) first_name = models.CharField(max_length=240) last_name = models.CharField(max_length=255) mobile = models.CharField(max_length=50) address = models.CharField( max_length=250) is_staff = models.BooleanField(default=True) # must needed, otherwise you won't … -
Send message to all Users in Django
i was about to create a function that sends message to all members Using forloop but then i thought that this method gonna take alot of time in process if there is a plenty of members... so i came to ask if is there any better method to ignore forloop and smooth the process. Model: class TblExamNotification(models.Model): exam = ForeignKey(TblExam,on_delete=models.CASCADE,blank=True, null=True) user = ForeignKey(Members,on_delete=models.CASCADE,blank=True, null=True) is_seen = BooleanField(default=False) def __str__(self): return str(self.id) Views: for member in memebers.exclude(member = request.user): notif_obj = Members.objects.create(user=member , exam=exam_obj) notif_obj .save() -
Unicode slug dose not work after deploying in iis8
i need help to solve my problem, i deployed a django web app in iis 8 that contains Persian slug, in development everything ok but when i deployed the app in iis 8, the app urls that contains Persian Unicode characters are not working. this is my url.py from . import settings from django.conf.urls.static import static from django.contrib import admin from django.urls import path, include, register_converter from .views import * from django.urls.converters import SlugConverter class CustomSlugConverter(SlugConverter): regex = '[-\w]+' register_converter(CustomSlugConverter, 'custom_slug') urlpatterns = [ path('admin/', admin.site.urls), path('dashboard/', include('tour.urls')), path('ckeditor/', include('ckeditor_uploader.urls')), path('', IndexPage, name='index-page'), path('tour/<int:id>/custom_slug:Slug>', TourDetail, name='tour-detail'), path('hotels/<int:id>/<custom_slug:Slug>', HotelDetail, name='hotel-detail') ] in my models.py Slug = models.SlugField(max_length=200, unique=True, null=False, verbose_name='لینک سئو') all URLs with English slug work but only Unicode slug dose not work in deployment, in development everything okay. thanks for your attention and replies -
UTF8 charset is not working in Django project
In my Django project, Russian Cyrillic symbols stopped working. For example, if I set some Cyrillic symbols to one variable and print it, string = "ввв" print(string) it is giving an error: UnicodeEncodeError: 'charmap' codec can't encode characters in position 1-3: character maps to <undefined> I tried this expression in my different Django project, and in that project, it is working well without any errors. -
Suggestions on improving a form view
I'm building an app where the user enters data and then gets redirected to a page that shows results based on their input with some simple equations. However, every time I refresh the results page, a new model instance is saved on the database. Is there another (more efficient and effective) way of passing the data from this view to another view where I have access to the instance of that model submitted through the form view? What's the Django way of passing form data to a view? The only limitation is I don't want user authentication so using self.request.user is not an option unless it can be implemented in a way that doesn't require users to sign up and sign in. I'm still somewhat new to Django so any pointers to obvious solutions that I'm overlooking would be greatly appreciated. This is the view that processes the model form: def createcalculation(request): form = CalcForm() if request.method == 'POST': form = CalcForm(request.POST) if form.is_valid(): item = form.save() m_data = get_object_or_404(Calculate, id=item.id) context = {'c_data': form.cleaned_data, 'm_data': m_data} return render(request, 'calc/res_ca.html', context) context = {'c_form': form} return render(request, 'calc/calc.html', context) -
django - AttributeError: 'function' object has no attribute 'as_view'
i'm a newbie and i can't fix this: def UserList(ListView): model = User template_name = 'core/users.html' path('users/', views.UserList.as_view(), name="user_list"), AttributeError: 'function' object has no attribute 'as_view' -
search for django-objects tagged with all tags in a set
In my django-project have a search function where you can specify tags, like "apple, banana" and by that query for objects of a certain model, tagged with taggit. When I do: tag_set = Tag.objects.filter(Q(name__in=tag_list)) query_set = Model.objects.filter(Q(tags__in=tag_set)) this gives me objects tagged with either "apple" OR "banana". But I want the AND operator... I tried: query_set = Model.objects.filter(reduce(operator.and_, (Q(tags__in=x) for x in tag_set))) but then I get 'Tag' object is not iterable. Any help? -
How to have an optional character field in a django form, but validate it so that an empty string is not allowed?
I have a form for a PATCH request similar to the following: class SampleForm(Form): optional_field = CharField(required=False, validator=[optional_text_field_validator]) This is the validator- def optional_text_field_validator(text): if len(text) == 0: raise ValidationError("This field cannot be empty") I have also tried- def optional_text_field_validator(text): if text == 0: raise ValidationError("This field cannot be empty") I am doing this so that it is not mandatory to include the optional_field in a request, but when it is present, it's value cannot be an empty string. However, the form validation is passing with both the above approaches (is_valid returns True), when it should be failing. How do I implement this? -
Schedule automated jobs in Django
Anyone knows how to schedule a Django script to run at a certain date and time? Example: User enters someone’s contact info on frontend, Django backend receives the form data, but doesn’t send the contact an email until 48 hours later. Anyone has an idea? I saw Cron, but looks like Cron needs to be executed and doesn’t automatically execute on its own? Just need help learning the scheduling feature. -
Why does my js function only run if called in the file and not on a onload?
It has been a while since I havent used JS and when I try to get my function to run onload nothing happens it should just print numbers to the console. It works if I call the function in the js file but not if I am trying to do a onload and pass parameters do I have to call the function in the file or can I call it in the html doc only? I am using Django if this affects anything. HTML <canvas id="homepage-stockGraph" style="background-color: white;" onload="test(1, 2, 3, 4)"></canvas> then I call this at the bottom of the page <script src="{% static 'js/canvas.js' %}"></script> Here is all of the js function test(x1, y1, x2, y2) { console.log('x1: ' + x1, + ', y1: ' + y1 + ', x2: ' + x2 + ', y2: ' + y2 ); } -
Nested subquery in django ORM
I need to transform this query to django, but I can't figure out how. SELECT SUM(income) FROM ( SELECT COUNT(keyword)* CASE WHEN country='ca' THEN 390 WHEN country='fi' THEN 290 WHEN country='it' THEN 280 WHEN country='nl' THEN 260 ELSE 250 END AS income FROM analytics_conversions WHERE keyword = 'online' AND click_time BETWEEN '2022-06-01' AND '2022-06-30' GROUP BY country) as _ Now I have this code, but it returns multiple rows. These rows should be summed and return only that one row to be used in a subquery. keywords_conversions_params = { 'keyword': OuterRef('keyword'), 'keyword_type': OuterRef('keyword_type') } keywords_conversions_value = Conversions.objects.filter( **keywords_conversions_params).order_by().values('keyword').annotate( value=Count('pk') * Case( When(country='ca', then=350), When(country='fi', then=290), When(country='it', then=280), When(country='nl', then=260), default=250 )).values('value') -
How can I generate a random unique User id value in django user model and show it on django admin?
I have a Model in django. I just extended the AbstractBaseUser and added some custom fields in the with BaseUserManager. Now I need to generate a unique Id as primary key and need to show it on django admin..How can I do that? my model is given below. from django.db import models from django.contrib.auth.models import AbstractBaseUser,PermissionsMixin,BaseUserManager class CustomUserManager(BaseUserManager): def _create_user(self, email, password, first_name, last_name, mobile, **extra_fields): if not email: raise ValueError("Email must be provided") if not password: raise ValueError('Password is not provided') user = self.model( email = self.normalize_email(email), first_name = first_name, last_name = last_name, mobile = mobile, **extra_fields ) user.set_password(password) user.save(using=self._db) return user def create_user(self, email, password, first_name, last_name, mobile, **extra_fields): extra_fields.setdefault('is_staff',True) extra_fields.setdefault('is_active',True) extra_fields.setdefault('is_superuser',False) return self._create_user(email, password, first_name, last_name, mobile, password, **extra_fields) def create_superuser(self, email, password, first_name, last_name, mobile, **extra_fields): extra_fields.setdefault('is_staff',True) extra_fields.setdefault('is_active',True) extra_fields.setdefault('is_superuser',True) return self._create_user(email, password, first_name, last_name, mobile, **extra_fields) class User(AbstractBaseUser,PermissionsMixin): email = models.EmailField(db_index=True, unique=True, max_length=254) first_name = models.CharField(max_length=240) last_name = models.CharField(max_length=255) mobile = models.CharField(max_length=50) address = models.CharField( max_length=250) is_staff = models.BooleanField(default=True) is_active = models.BooleanField(default=True) is_superuser = models.BooleanField(default=False) objects = CustomUserManager() USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['first_name','last_name','mobile'] class Meta: verbose_name = 'User' verbose_name_plural = 'Users' -
How can I change django login form from username to email when users wanted to login
Is there anyways I can change django custom user login from Username to Email? I have try using this method but it does not work: def login(request): if request.method == 'POST': email = request.POST['email'] password = request.POST['password'] user = auth.authenticate(request, email=email, password=password) if user is not None: auth.login(request, user) return redirect('Home') else: messages.info(request, 'Invalid Credential') return redirect('login') else: return render(request, 'login.html') I want to allow user to login using Email not Username. -
Django Migrations in CI/CD pipeline
My CI/CD pipeline is triggered whenever there is a code push. There is an already populated database(PostgreSQL). I am doing changes in models.py (specifically adding a new model) and python manage.py makemigrations <app-name> and python manage.py migrate commands are written in docker entry-point file, so I expect that on every code push, these commands will execute and create migrations file and database should reflect changes. But database isn't showing any changes at all, however, Django's admin page is showing the new model name. Also, there is no migrations folder present in the repository at all in any app. How do i resolve it. I wanna add a new table and add a new column in an existing table -
How to restrict field options in Django Forms
I created a form that adds a permission to a user. However if a user has a permission already assigned it results in a UNIQUE KEY ERROR. How do I modify the form so that I don't display any users that already have permission assigned. In other words how do I restrict the field values/options of a form ? -
Django, how do I populate a bespoke form widget
I have created a bespoke form widget which saves an address as a list. class AddressWidget(MultiWidget): def __init__(self, base_widget, attrs=None): widgets = ( forms.TextInput(attrs={'placeholder': 'Address', 'class': 'form-control'}), forms.TextInput(attrs={'placeholder': 'Address Line 2', 'class': 'form-control'}), forms.TextInput(attrs={'placeholder': 'City', 'class': 'form-control'}), forms.TextInput(attrs={'placeholder': 'State', 'class': 'form-control'}), forms.TextInput(attrs={'placeholder': 'Postcode', 'class': 'form-control'}), ) super().__init__(widgets, attrs) def decompress(self, value): if value: return (value.address1, value.address2, value.city, value.state, value.postcode) return (None, None, None, None, None) Saving the form works as I want, but when re-entering the form in order to change values, it doesn't get prepopulated, although all other regular fields do. How do I get it to populate the field? -
Override the variable from parent class in Django Models
I have a model ChildModel and it has two parent classes ActivatorModel and TimeStampedModel Below are the three models: The two base classes class ActivatorModel(models.Model): """ ActivatorModel An abstract base class model that provides activate and deactivate fields. """ INACTIVE_STATUS = 0 ACTIVE_STATUS = 1 STATUS_CHOICES = ( (INACTIVE_STATUS, _('Inactive')), (ACTIVE_STATUS, _('Active')), ) status = models.IntegerField(_('status'), choices=STATUS_CHOICES, default=ACTIVE_STATUS) activate_date = models.DateTimeField(blank=True, null=True, help_text=_('keep empty for an immediate activation')) deactivate_date = models.DateTimeField(blank=True, null=True, help_text=_('keep empty for indefinite activation')) objects = ActivatorModelManager() class Meta: ordering = ('status', '-activate_date',) abstract = True def save(self, *args, **kwargs): if not self.activate_date: self.activate_date = now() super().save(*args, **kwargs) class TimeStampedModel(models.Model): """ TimeStampedModel An abstract base class model that provides self-managed "created" and "modified" fields. """ created = CreationDateTimeField(_('created')) modified = ModificationDateTimeField(_('modified')) def save(self, **kwargs): self.update_modified = kwargs.pop('update_modified', getattr(self, 'update_modified', True)) super().save(**kwargs) class Meta: get_latest_by = 'modified' abstract = True The class using the above base models class ChildModel(ActivatorModel, TimeStampedModel): child_id = models.CharField( max_length=36, primary_key=True, default=uuid.uuid4 ) display_name = models.CharField(blank=True, max_length=100, null=True) status = models.CharField(max_length=20, null=True, blank=True, default='Active') The issues is whenever I try to save some character type value in ChildModel.status, it throws an error invalid input syntax for integer. How to properly override the variable status … -
Django Rest APi Authentication credentials
i am working on a project using Django as backed server and flutter as fronted framework , i faced a problem today when i try to POST a data from the flutter UI app into the Django server data base using the the REST API i keep getting this error "detail": "Authentication credentials were not provided." the problem is when i make a POST request from the web browser it works fine i guess i need to provide more information to the Django server to from the flutter App to authenticate then i can POST data here is the flutter method Future<CreateProduct> submitProduct(String name , String price , String brand , String countinstock , String category , String description) async { String createProductUri = "http://127.0.0.1:8000/api/products/create/"; final response = await http.post(Uri.parse(createProductUri),body: { "name": name, "price": price, "brand": brand, "countInStock": countinstock, "category": category, "description": description }); if (response.statusCode == 201){ final responseString = response.body; return createProductFromJson(responseString); } } and the Django request @api_view(['POST']) @permission_classes([IsAdminUser]) def createProduct(request): user = request.user data = request.data product = Product.objects.create( user=user, name=data['name'], price=data['price'], brand=data['brand'], countInStock=data['countInStock'], category=data['category'], description=data['description'], ) serializer = ProductSerializer(product, many=False) return Response(serializer.data) -
Keep sidebar open when reload page in django
I have multiple apps with templates in my django project. All the templates extend my base.html file, which include the page sidebar. When I click one of the menu on the sidebar the whole page is refreshed. How can I keep open the sidebar and only refresh the page content? I though about using ajax but I'm not sure if it is the right way. Here is the body part of my base.html. <body> <div class="wrapper"> <!-- SIDEBAR --> {% include 'sidebar.html' %} <!-- PAGE CONTENT --> <!--<div class="container-fluid">--> {% block content %} {% endblock %} <!--</div>--> </div> </body> And here is my sidebar.html <div class="sidenav"> <ul class="sidebar-nav"> <li><a href="#">Menu1</a></li> <li><a href="#">Menu2</a></li> <li><a href="#">Menu3</a></li> <li><a href="#">Menu4</a></li> <li><a href="#">Menu5</a></li> </ul> </div> -
How to properly build models in django
I want to implement a photo gallery in my project. in the django rest framework I want the output to be: [ { "id": 1, "owner": { "username": "drw", "first_name": "", "last_name": "", "avatar": "http://127.0.0.1:8000/media/default.png", }, "gallery": { "id": 4, "project_gallery": [ { "id": 1, "image": "http://127.0.0.1:8000/media/uploads/2022/8/9/drw/616da7a24f6856fab5dac79a_360_IT_Check_-_October_18th_2021_wUvme58.png", "thumbnail": null, "user": 1 }, { "id": 2, "image": "http://127.0.0.1:8000/media/uploads/2022/8/9/drw/Adapta-KDE-theme_vdDo0PO.webp", "thumbnail": null, "user": 1 }, { "id": 3, "image": "http://127.0.0.1:8000/media/uploads/2022/8/9/drw/Adapta-KDE-theme_ghZHmGF.webp", "thumbnail": null, "user": 1 } ], "project_gallery_name": "Testowo" }, "likes": [], "category": "ca1", "uuid": "30065e4d-3674-4f01-9861-307fe27ede13", "project_name": "Testowo", "comments": null } ] I do not know if I am doing well with manytomany. class ImagesForGallery(models.Model): user = models.ForeignKey(UserProfile, null=True, blank=True, on_delete=models.CASCADE) image = models.ImageField(upload_to=user_directory_path, blank=True, null=True) thumbnail = models.ImageField(upload_to='uploads/', blank=True, null=True) def __str__(self): return 'User: {} || Image: {}'.format(self.user, self.image) class GalleryProject(models.Model): project_gallery_name = models.CharField(max_length=20, null=True, blank=True) project_gallery = models.ManyToManyField(ImagesForGallery, blank=True, related_name='project_gallery') def __str__(self): return '{}'.format(self.project_gallery_name) if i want an output like above then should i use many to many or foreginkey? -
Initialize request in get_edit_handler in ModelAdmin class in Wagtail
I can not inilitialize request in ModelAdmin. By default, request in function def get_edit_handler(self, instance, request) is None. How can I do it so I can access request in the function mentioned above? E.g for request.user. class SomemodelAdmin(ModelAdmin): model = Somemodel list_display = ("field",) edit_view_class = SaveContinueEditView def get_edit_handler(self, instance, request): print(request) #This prints None. -
Mezzanine + Cartridge 'Cart' instance needs to have a primary key value
Good afternoon. I just installed the cartridge to see its capabilities and got an error. Please help me solve this. [https://pastebin.com/tNuMbbQm][1]