Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Get session value from django form
I have 2 forms, one is the main one and the other one opens in a modal window. I need my second form to get the company session value (AIGN_EMP_ID), however, I don't know how to send this value when I call my form from the Context. First form.py class MayoresForm(Form): act_cuenta = () act_fechaini = DateField( widget=DatePickerInput( format=Form_CSS.fields_date_format, options=Form_CSS.fields_date_opts, attrs={'value': Form_CSS.fields_current_date} ), label="Fecha desde: ", required=True, ) act_fechafin = DateField( widget=DatePickerInput( format=Form_CSS.fields_date_format, options=Form_CSS.fields_date_opts, attrs={'value': Form_CSS.fields_current_date} ), label="Fecha hasta: ", required=True, ) def __init__(self, *args, **kwargs): # -------------------------------------------------------------------------------------- self.AIGN_OPCIONES = kwargs.pop("AIGN_OPCIONES") self.PERMISOS = [] # para recuperar los permisos de la tabla __json_values = json.loads(json.dumps(self.AIGN_OPCIONES)) self.PERMISOS = recuperarPermisos(__json_values, 'con.transaccioncab') # -------------------------------------------------------------------------------------- # Obtiene la variable de sesion desde la vista y la asigna al self self.AIGN_EMP_ID = kwargs.pop("AIGN_EMP_ID") super(MayoresForm, self).__init__(*args, **kwargs) self.fields['act_cuenta'] = ChoiceField(label='Cuenta: ', choices=self.get_choices(), required=True) for form in self.visible_fields(): # form.field.widget.attrs['placeholder'] = Form_CSS.fields_placeholder + form.field.label.lower() form.field.widget.attrs['autocomplete'] = Form_CSS.fields_autocomplete form.field.widget.attrs['class'] = Form_CSS.fields_attr_class self.helper = FormHelper(self) self.helper.form_method = 'post' self.helper.form_id = Form_CSS.getFormID(self) self.helper.attrs = Form_CSS.form_attrs self.helper.form_tag = True self.helper.form_error_title = Form_CSS.form_err_title self.helper.form_class = Form_CSS.form_class self.helper.label_class = 'col-sm-3 text-right form-control-sm' self.helper.field_class = 'col-sm-6' self.helper.layout = Layout( Div( DivHeaderWithButtons(instance_pk=None, remove_create=False, remove_delete=True, remove_print=True, remove_cancel=False, permisos=self.PERMISOS, save_name=' Consultar'), Div( Div( Div( Div( Div( HTML("<h3 … -
Django: Inherit class with API Data
I want to ask the user for a password in my first view and in the other views use this password to show data on the frontend. So far I just saved the password in a session and I instantiated the API every time I clicked on another view. What I want is to save the state of that API call (for example the token) in this class. I thought I could try with inheritance - I want to know in general if this is a good approach and also what I am doing wrong: class APItoInherit: def create(self, server, username, password): self.APISession = theAPI("https", server, username, password) return self.APIsession class FirstView(APItoInherit, TemplateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) ... api = self.create(self.request.session.get('url'), self.request.session.get('usr'), self.request.session.get('pwd')) ... return context class SecondView(APItoInherit, TemplateView): def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) ... tmp = someAPIClassFunction(self.APISession) # <--- break ... return context My goal is to instantiate the API in the first view (for example to get a token) and later on use it to call methods of the API Class implementation. If this cannot be done that way, is there any other way I can comfortably save and hand the API Object (APISession) over … -
How to do ajax pagination with QueryString Parameters in Django?
I want to create pagination with multiple QueryString Parameters, I created regular pagination with Django only but while creating Ajax pagination with multiple QueryString I faced problems. My views: def products(request): products = Products.objects.all() if request.method == 'GET': per_page = request.GET.get("option") paginator = Paginator(products, per_page) # data from get request is not passed properly page = request.GET.get('page') try: product_list = paginator.page(page) except PageNotAnInteger: product_list = paginator.page(1) except EmptyPage: product_list = paginator.page(paginator.num_pages) return render(request, './item/shop.html', {'products': products}) My Query parameter submitting html: <select name="show-product-count" class="form-control" id= "show-product-count"> <option value="9">Show 9</option> <option value="12" selected="selected">Show 12</option> <option value="24">Show 24</option> <option value="36">Show 36</option> </select> My Ajax/Jquery: $(document).ready(function () { $("#show-product-count").on("change", function(){ var selectedValue = $(this).val(); $.ajax({ url : $(this).data('url'), type : "GET", data : {"option" : selectedValue}, dataType : "json", success : function(){ } }); }); }) -
Django. How to get value from multiple checkboxes
Hey I have seen many questions about this but i dont know why it isnt working for me. I have this piece of code in my home.html file: <form action="/result/" method="post"> <div class="form-locat-att"> {% csrf_token %} Location: <input type="text" name="location_input" required/> <p></p><br> <button class="btn btn-block btn-round", name="search_button">Search</button> <p></p> <h5>Zabytki</h5> <p></p> <input type="checkbox" id="museum" name="att[]" value=" Museum OR"> <label for="muzeum"> Museum</label> &nbsp; <input type="checkbox" id="statue" name="att[]" value=" Statue OR"> <label for="pomnik"> Statue</label> &nbsp; <input type="checkbox" id="castle" name="att[]" value=" Castle OR"> <label for="zamek"> Castle</label> &nbsp; <input type="checkbox" id="palace" name="att[]" value=" Palace OR"> <label for="palac"> Palace</label> <p></p> </div> </form> And this is my views.py: def result(request): if request.method == 'POST' and 'search_button' in request.POST: attrac = request.POST.getlist('att[]') locat = request.POST.get('location_input') print(attrac) # (here i have some irrelevant code where i render my context) return render(request, 'przewodnik_app/result.html', context) return render(request, 'przewodnik_app/result.html') I am trying to print attrac which should give me values from the checkboxes i've checked. When i use the .get method with id for example request.POST.get('museum') it returns correct value. When i am using name the list is always empty. -
How to implement function to delete all items from cart (django)
hey guys I made a website in django and it has a cart feature in it . Currently I've implemented a feature that you can delete items but it only deletes them on by one. I'm stuck on how to get the feature to delete all items currently in the cart cart.html {% for cart_item in cart_item %} {% if cart_item.quantity < cart_item.product.stock %} <a <a href="{% url 'cart:full_remove' cart_item.product.id %}" class="custom_icon"><i class="fas fa-trash-alt custom_icon"></i></a> {% endif %} {% endfor %} cart urls.py from os import name from django.urls import path from . import views app_name='cart' urlpatterns = [ path('add/<uuid:product_id>/', views.add_cart, name='add_cart'), path('', views.cart_detail, name='cart_detail'), path('remove/<uuid:product_id>/', views.cart_remove, name='cart_remove'), path('full_remove/<uuid:product_id>/', views.full_remove, name='full_remove'), ] cart views.py def full_remove(request, product_id): cart = Cart.objects.get(cart_id=_cart_id(request)) product = get_object_or_404(Product, id=product_id) cart_item = CartItem.objects.get(product=product, cart=cart) cart_item.delete() return redirect('cart:cart_detail') -
I cannot import a module into python
I'm taking a django course and when I go to put urls, it's causing this problem: Code: Folder structure: -
escape single quotes in django date filter
I have this html code snippet: <td><button value="{{i.0}}" type="button" onclick="setEndActivity({{i.0}}, '{{i.1}}', '{{i.8}}', '{{i.10}}', '{{i.4 | 'date:Y-m-d H:m:s'}}')">End</button></td> I'd like to escape single quotes here: 'date:Y-m-d H:m:s' . Even better to create better mask to ISO format. -
Change inherit field to required in a Serializer
I have a serializer like that: from rest_framework import serializers class MySerializer(serializers.Serializer): field1 = serializers.CharField(required=False) field2 = serializers.IntegerField(required=False) field3 = serializers.BooleanField(required=False) ... I want to inherit this class but changing field1to required=True, who can I do that? I know that I can redefine the field like this: class MySerializer2(MySerializer): field1 = serializers.CharField(required=True) But I dont like to do this. -
How to format variable in template as currency?
I am trying to format a string in a template to display as a currency. {{ object.cost }} Would I be able to do something like "${:,.2f}".format({{ object.cost }}) in the template? -
Bearer Authentication does not work on mobile, however it works on pc ( react, django )
I wrote a React app with a backend on Django that works fine on PC. However, when I open it on my iPhone (ios 15), it does not include Authenticate: Bearer 'my_token'. const getStats = async () => { console.log(accessToken) let response = await fetch('http://192.168.1.2:8000/api/getstats', { method: 'GET', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', 'Authorization': 'Bearer ' + String(accessToken), }, }) Django gets this header when getting requests on PC: {'Content-Length': '', 'Content-Type': 'application/json', 'Host': '192.168.1.2:8000', 'Connection': 'keep-alive', 'Authorization': 'Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjQwMDI3NTExLCJpYXQiOjE2NDAwMjYzMTEsImp0aSI6Ijk0OTdlZGZjZWEzYzQwMTJiYzc5YjQ2ODc4YWJiYWQ2IiwidXNlcl9pZCI6MiwiZW1haWwiOiJ5YnJvdmNAZ21haWwuY29tIn0.nKdBwT4XmKSWlqMP3EYF_pXpLgJAjDR_XuaSsummgbQ', 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36', 'Accept': '*/*', 'Origin': 'http://192.168.1.2:3000', 'Accept-Encoding': 'gzip, deflate', 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7'} As you can see, an Authentication token was provided and everything worked fine {'Content-Length': '', 'Content-Type': 'application/json', 'Host': '192.168.1.2:8000', 'Origin': 'http://192.168.1.2:3000', 'Accept': '*/*', 'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 15_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/96.0.4664.101 Mobile/15E148 Safari/604.1', 'Accept-Language': 'en-GB,en;q=0.9', 'Accept-Encoding': 'gzip, deflate', 'Connection': 'keep-alive'} This one Django gets as header when I send request from my iPhone. And this is my function on Django that print those headers @api_view(['GET']) # @permission_classes([IsAuthenticated]) def getStats(request): print(request.headers) print(request.user) all_cart_elems = Cart.objects.all() all_orders = Orders.objects.all() all_users = Telegram_users.objects.all() print(len(all_cart_elems)) data = { 'cart_elems': len(all_cart_elems), 'orders': len(all_orders), 'all_users': len(all_users) } … -
django taggit similar_objects problem(maybe queryset)
Currently, when searching for a tag like Instagram, an image list page including the tag has been created. I wanted to list the related tag list in one line here, and I found out that the 'taggit' package already has a good function called 'similar_objects'. My 'view.py' is designed to expose only certain tags as follows. If you add "similar_objects," "'ImageTagListView' object has no attribute 'object'" occurs. I think it's a "queryset" problem. Please tell me the solution. Thank you in advance. class ImageTagListView(ImageListView): template_name = 'imageapp/taglist.html' model = Image def get_queryset(self): return Image.objects.filter(tags__name=self.kwargs.get('tag')) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context['tagname'] = self.kwargs['tag'] context["related_items"] = self.object.tags.similar_objects()[:4] return context -
Django - How to add multiple objects to a database dyanmically via a API endpoint use rest_framework
Django supports a method to allow you to query your database and add multiple objects to it using the Objects.create_bulk() I’ve had a good look on google to better understand how to use this method, but i’m not sure how to achieve what it is i’m trying to achieve. Here’s where i’m at so far: I’ve created an api endpoint that lists all the inventory objects that currently exists I’ve also created an api endpoint that allows you to filter by playerId and will return all inventory items that player owns Here’s what i’m trying to do: Create an API endpoint that allows multiple elements to be added to a specified users inventory (playerId) I just need an endpoint to allow a POST method to append multiple elements to a specified player’s inventory, it should look something like this: def add_multiple_items_to_inventory(request, pk): itemsToAdd = Inventory.objects.bulk_create( [Inventory( playerId: 1, elementId: 2, elementId: 2, elementId: 2, elementId: 4, elementId: 7)) serializer = InventorySerializer(data=itemsToAdd) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) so hitting this endpoint with some data like this -> { playerId:1, elementId: 1, elementId: 1, elementId: 1, elementId: 2, elementId: 2, elementId: 7, } should add elements [1,1,1,2,2,7] to … -
How to add attachments in Sendgrid Django
I'm trying to figure out how to add attachments to my email I am sending through sendgrid. I have an .xlsx file in the same directory however it won't get attached. I currently have my code like this: with open(f'name-{filenumber}.xlsx', 'rb') as fd: encoded = base64.b64encode(fd.read()) attachment = Attachment() attachment.content = (encoded, 'utf-8') attachment.filename = f'name-{filenumber}.xlsx' message = Mail( from_email='email.@email.com', to_emails= os.getenv("RECIPIENT_EMAIL"), subject='Sending with Twilio SendGrid is Fun', html_content='<strong>and easy to do anywhere, even with Python</strong>') message.add_attachment(attachment) try: sg = SendGridAPIClient('SENDGRID_API_KEY') response = sg.send(message) print(response.status_code) print(response.body) print(response.headers) except Exception as e: print(e.message) But I keep getting this error AttributeError: 'BadRequestsError' object has no attribute 'message' Along with this: python_http_client.exceptions.BadRequestsError: HTTP Error 400: Bad Request``` -
Unit testing an authenticated user in Django
I am trying to test access as a logged in user. I'm having trouble with the unit test below which won't work with me. class ExampleTest(TestCase): def setUp(self): self.client = Client() self.example_user = get_user_model().objects.create_user( username='exampleuser', email='user@example.com' ) self.example_user.set_password('testing12345') self.example_user.save() def test_taking_too_much_time(self): my_client = self.client #my_client = Client() my_client.login(username='exampleuser', password='testing12345') #my_client.force_login(self.example_user) response = my_client.get('/example/link/') self.assertEqual(response.status_code, 200) I have tried everything, but despite various solutions, I receive a message. AttributeError: 'HttpRequest' object has no attribute 'user' In the project I have a signal that eliminates the 'bug' if I comment on it. @receiver(user_logged_in, sender=User) def log_in(request, sender, **kwargs) I am waiting for feedback. -
String with white space being passed incorrectly in a Django template
I have a variable called "Vintage White" that I am trying to pass to an attribute of an input element like so. <input name={{ attribute_value }}> What I expect is for the element to be rendered like this <input name="Vintage White"> But instead I get this <input name="Vintage" white> How do I pass the entire string with white spaces to the input element so that I get my expected result? -
Public Transportation Webapp in DJANGO : models (many-to-many relationship) for transportation systems and routes
I have to make a webapplication that would allow a userbase to create alerts about controlers in public transportation in a big city. It would include mostly trains and buses. I'm quite stuck with how to create the model. I've already created the Alert that has a station attribute with a one-to-one relationship, and a line attribute also. I have two models : a model Stations, and a model Line. Now each transportation mode (bus/train) has a line, stations and a schedule. I used a many-to-many fields in the Line model, but I don't know how to order the stations, since a bus while go through each station in an orderly fashion, neither how to link that to a schedule. I thought about making another model "Route" with each instance having an attribute Line, Station and Order, but that doesn't seem optimal for routes that have many stations. (Transportations/models.py) class Station(models.Model): Station_name = models.CharField(max_length=200) Station_adress = models.CharField(max_length=300) Station_number = models.PositiveIntegerField(blank=True, null=True) Station_desc = models.CharField(max_length=150, blank=True, null=True) Station_vehicule = models.ForeignKey(Vehicule, on_delete=models.CASCADE) def __str__(self): return f'{self.Station_name} {self.Station_desc}' class Line(models.Model): Line_number = models.PositiveIntegerField(validators=[MinValueValidator(1), MaxValueValidator(100)]) Line_name = models.CharField(max_length=200, blank=True, null=True) Line_vehicule = models.ForeignKey(Vehicule, on_delete=models.CASCADE) Line_stations = models.ManyToManyField(Station) def __str__(self): return f'{self.Line_vehicule}: {self.Line_number}' class Line_station(models.Model): … -
I am trying to complete the URL for my Medical Store System
It is my first Personal Project using Django in Python. I am trying to create a Medical Store management System why do I get an error "/admin/API" in the Django rest framework. The error is: "Not Found: /admin/api/ [20/Dec/2021 23:30:15] "GET /admin/api/ HTTP/1.1" 404 5358 Not Found: /admin/api [20/Dec/2021 23:30:20] "GET /admin/api HTTP/1.1" 404 5355" -
django orm AND condition for same key with multiple options
ihave a model WebDocuments with multiple objects of different document type and i want to apply and condition document_type= ['PAN', 'DL'] doc_obj = WebDocuments.objects.filter(is_active=True) q_objects = Q() if document_type: q_objects &= [Q(type=doc) for doc in document_type] check_obj = doc_obj.filter(q_objects) if check_obj: return True return False i want to return True or False wheather both document type exist of not. i have both document type in my db still it returning empty because it filtering both type on save object . is there is any way to do it with and operator or i have to loop queryset with all doc types here is my model class WebDocuments(TimeStampedModel): uuid = models.UUIDField(default=uuid.uuid4, null=True, blank=True) lead = models.ForeignKey(Lead, related_name='web_lead_document') type = models.CharField(choices=DocumentTypeChoices.choices, max_length=100) -
Project Can not be created in Django
Traceback (most recent call last): File "/usr/bin/django-admin", line 2, in from django.core import management ModuleNotFoundError: No module named 'django' -
BDD Test for Login Django
I'm new with Django. I would like to write a BDD test with Behave to test login (and possibly registration) but after several attempts I'm not sure where to start. Would you have any suggestions on how I could write these tests? and another question is in this case BDD the best choice or should I opt for a unit-test here? Thanks Code for the view.py: from django.shortcuts import get_object_or_404, render, redirect from django.urls import reverse from django.contrib.auth import login,logout,authenticate from labs.models import Category from .forms import createuserform def index(request): categories = Category.objects.all() context = { 'categories':categories, } return render(request, 'landing/index.html', context) def registerPage(request): if request.user.is_authenticated: return redirect('/labs') else: form=createuserform() if request.method=='POST': form=createuserform(request.POST) if form.is_valid() : user=form.save() return redirect('/login') context={ 'form':form, } return render(request,'landing/register.html',context) def loginPage(request): if request.user.is_authenticated: return redirect('/labs') else: if request.method=="POST": username=request.POST.get('username') password=request.POST.get('password') user=authenticate(request,username=username,password=password) if user is not None: login(request,user) return redirect('/') context={} return render(request,'landing/login.html',context) def logoutPage(request): logout(request) return redirect('/') -
Django Saving form with two foreign keys
I am attempting to save a form that submits data (project note comments) linked to another model (project notes) via foreign key (project notes). Project notes are linked via foreign key to another model (projects). I thought I would only need to consider the immediate relationship (project notes). However from the error I am getting, I also need to process the relationship from project notes to project. The error: IntegrityError at /projects/note/1/add_project_note_comment/ insert or update on table "company_project_projectnotes" violates foreign key constraint "company_project_proj_project_id_478f433c_fk_company_p" DETAIL: Key (project_id)=(0) is not present in table "company_project_project". The models: class Project(models.Model): title = models.CharField(max_length= 200) description = tinymce_models.HTMLField() def __str__(self): return self.title def get_absolute_url(self): return reverse ('project_detail', args=[str(self.id)]) class ProjectNotes(models.Model): title = models.CharField(max_length=200) body = tinymce_models.HTMLField() date = models.DateField(auto_now_add=True) project = models.ForeignKey(Project, default=0, blank=True, on_delete=models.CASCADE, related_name='notes') def __str__(self): return self.title class ProjectNoteComments(models.Model): body = tinymce_models.HTMLField() date = models.DateField(auto_now_add=True) projectnote = models.ForeignKey(ProjectNotes, default=0, blank=True, on_delete=models.CASCADE, related_name='notes') The view: class ProjectNotesCommentCreateView(CreateView): model = ProjectNotes template_name = 'company_accounts/add_project_note_comment.html' fields = ['body'] def form_valid(self, form): projectnote = get_object_or_404(ProjectNotes, id=self.kwargs.get('pk')) comment = form.save(commit=False) comment.projectnote = projectnote comment.save() return super().form_valid(form) def get_success_url(self): return reverse('project_detail', args=[self.kwargs.get('pk')]) The URL pattern: path('note/<int:pk>/add_project_note_comment/', ProjectNotesCommentCreateView.as_view(), name='add_project_note_comment'), The template: {% extends 'base.html' %} {% load crispy_forms_tags %} … -
Database error in test environment for Django+PSQL application testing using selenium
I have a Django+PSQL application which we run in docker. I am trying testing it in separate docker environment such that the test database does not affect application's database. My tests run fine in normal running docker, but when running in test docker environment, it fails due to password verification. Both my main yml file and test yml files are same with respect to postgres server services. I have tried few solutions from internet, but not working. I have not tried anything related to creating test database. Should I explore that also -
I get none for validation form Django
class SignUpForm(UserCreationForm): class Meta: model = models.User fields = ["first_name", "last_name", "email"] def clean_password1(self): password = self.cleaned_data.get("password") password1 = self.cleaned_data.get("password1") print(password, password1) if password != password1: raise forms.ValidationError("비밀번호가 일치하지 않습니다.") else: return password def clean_email(self): email = self.cleaned_data.get("email") try: models.User.objects.get(username=email) raise forms.ValidationError("이미 가입된 이메일 입니다", code="existing_user") except models.User.DoesNotExist: return email def save(self, commit): username = self.cleaned_data.get("email") password = self.cleaned_data.get("password") user = super().save(commit=False) user.username = username user.set_password(password) user.save() Here is my code for validation and whenever i print password, I really dont understand why password1 is printed properly and password is none i get none can anybody explain to me why this happen? -
Pytest: Mocking Django view with multiple API calls and a combined return value
I have a Django view which calls multiple api endpoints and combine their result together. This result is returned back to the view as context variables. Here is the code: def form_valid(self, form): data = form.cleaned_data dashboard = meraki.DashboardAPI(api_key=meraki_api_key) try: device = dashboard.devices.getDevice(data.get('camera_id')) #api call 1 context = {} context['name'] = device.get('name', 'Not Available') context['model'] = device.get('model', 'Not Available') preview = dashboard.camera.generateDeviceCameraSnapshot(data.get('camera_id')) #api call 2 context['preview'] = preview.get('url', 'No Preview') camera_sense = dashboard.camera.getDeviceCameraSense(data.get('camera_id')) # api call 3 context['sense_enabled'] = camera_sense.get('senseEnabled', 'Not Available') broker = dashboard.networks.getNetworkMqttBroker(device.get('networkId'), camera_sense.get('mqttBrokerId')) #api call 4 context['broker_name'] = broker.get('name', 'Not Available') context['broker_host'] = broker.get('host', 'Not Available') context['broker_port'] = broker.get('port', 'Not Available') except meraki.exceptions.APIError as exc: messages.add_message(self.request, messages.ERROR, str(exc)) return self.render_to_response(self.get_context_data(form=form)) messages.add_message(self.request, messages.SUCCESS, "Success") return self.render_to_response( self.get_context_data(form=form, camera=context)) Now how to write unit test for the above view by mocking the api calls? -
Django 3 Multiple Account Types And Switching Between Them
i have directory listing application where a user [customer] can create multiple businesses [listings]. i want to implement an account switching system where the user can switch between being a customer or a listing they've created, and have that be their current login type even when they logout and log back in until they switch to another account type. i'm new to the django framework and was hoping someone could shed light on the best possible approach to accomplish this. i'm not using a custom user model nor have extended django's default.