Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django form is saying field is required despite providing value
I have a form with a required field customer_phone_number and despite passing a phone number in with the data the form isn't valid.. class OrderForm(forms.ModelForm): class Meta: model = models.Order fields = ( 'date', 'customer_phone_number', ) def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.fields['customer_phone_number'].required = True self.fields['customer_phone_number'].widget = PhoneNumberPrefixWidget() data = { 'date': '2020-04-20', 'customer_phone_number': '+17168567800', } form = OrderForm(data=data) form.is_valid() print(form.errors) # {'customer_phone_number': ['This field is required.']} The only thing I can think of is that I'm using a custom widget but I have no idea how to correct this error. from phonenumber_field.phonenumber import PhoneNumber from django.forms import Select, TextInput from django.forms.widgets import MultiWidget class PhonePrefixSelect(Select): initial = '+1' def __init__(self, attrs=None): choices = [('+1', '+1')] super().__init__(attrs, choices=sorted(choices, key=lambda item: item[1])) def render(self, name, value, *args, **kwargs): return super().render( name, value or self.initial, *args, **kwargs) class PhoneNumberPrefixWidget(MultiWidget): """ A Widget that splits phone number input into: - a country select box for phone prefix - an input for local phone number """ def __init__(self, attrs=None): widgets = ( PhonePrefixSelect(attrs={ 'class': 'form-control w-25 mr-2', 'tabindex': '-1' }), TextInput(attrs={ 'class': 'form-control w-75' }), ) super().__init__(widgets, attrs) def decompress(self, value): if value: if type(value) == PhoneNumber: if value.country_code and value.national_number: return ["+%d" % … -
Reuse django urls patterns and views
I have a usecase where I would like to reuse a bunch of existing views and url patterns. Current situation is a product with about 20 views for it: urlpatterns = [ # product url(r'^product/(?P<pid>\d+)$', views.view_product, name='view_product'), url(r'^product/(?P<pid>\d+)/something$', views.view_something, name='view_something'), url(r'^product/(?P<pid>\d+)/morethings', views.view_morethings, name='view_morethings'), url(r'^product/(?P<pid>\d+)/deeper/things$', views.view_deeper_things, name='view_deeper_things'), ... etc. So I can browse to the following urls: https://host/product/1 https://host/product/1/something https://host/product/1/morethings https://host/product/1/deeper/things In the new situation I want to add additional ways to browse to the products, i.e. product name or some key valuepair. i.e. https://host/product/name/product1 https://host/product/name/product1/something https://host/product/name/product1/morethings https://host/product/name/product1/deeper/things and https://host/product/meta/property1/value1 https://host/product/meta/property1/value1/something https://host/product/meta/property1/value1/morethings https://host/product/meta/property1/value1/deeper/things where I use a database query in the view to find the product by name, or by the specified property+value. How can I reuse patterns and views to avoid having 20 new views and patterns for each way of identifying a product? I could just list all the (20x3) possible patterns and add 20 more for each new way of identifying products. url(r'^product/(?P<pid>\d+)/something$', views.view_something, name='view_something'), url(r'^product/(?P<pid>\d+)/morethings', views.view_morethings, name='view_morethings'), url(r'^product/(?P<pid>\d+)/deeper/things$', views.view_deeper_things, name='view_deeper_things'), url(r'^product/name/<str:name>/something$', views.view_something_name, name='view_something_name'), url(r'^product/name/<str:name>/morethings', views.view_morethings_name, name='view_morethings_name'), url(r'^product/name/<str:name>/deeper/things$', views.view_deeper_things_name, name='view_deeper_things_name'), url(r'^product/meta/key/<str:name>/<str:name>/something$', views.view_something_meta, name='view_something_meta'), url(r'^product/meta/key/<str:name>/<str:name>/morethings', views.view_morethings_meta, name='view_morethings_meta'), url(r'^product/meta/key/<str:name>/<str:name>/deeper/things$', views.view_deeper_things_meta, name='view_deeper_things_meta'), I know I could do: urlpatterns = [ # product url(r'^product/(?P<pid>\d+)$', views.view_product, name='view_product'), url(r'^product/name/<str:name>$', views.view_product, name='view_product_by_name'), And have default … -
Django Template `With` Operator complex boolean assignment
I am creating a Django template that has columns only visible to admins. Currently I am using a template tag has_group that works well. I have to include some logic for superusers. {% if request.user|has_group:"Admins" or request.user.is_superuser %} <th class="detail_btn_col" scope="col">Detail</th> {% endif %} ... Similar code for the <td> But it's making a query for every row of a table. Not terrible but I would like to just set the value once at the start of the template. I saw that I could assign a variable using with and that would accomplish what I want. {% with has_admin_view=request.user|has_group:"Admins" or request.user.is_superuser %} Does not work. {% with has_admin_view=request.user|has_group:"Admins" %} The above works, but superusers aren't included. Is there a way to do AND/OR operations in Django template's WITH statement? -
Django rest framework serialize model with FK
I'm learning Django and Vuejs. There is something I'm not understanding how it works. I have a model "Nc" wich have some foreign key to other models like Affaire. How can i obtaines in my JSON files the str return for instances instead of the real value... models.py : class Affaires(models.Model): id = models.PositiveSmallIntegerField(primary_key=True) nom = models.CharField(max_length=50) adresse = models.CharField(max_length=100, blank=True, null=True) cp = models.CharField(max_length=5, blank=True, null=True) ville = models.CharField(max_length=50, blank=True, null=True) dessinateur = models.PositiveSmallIntegerField(blank=True, null=True) conducteur = models.PositiveSmallIntegerField(blank=True, null=True) chefdeprojet = models.PositiveSmallIntegerField(blank=True, null=True) cloture = models.IntegerField() class Meta: managed = True db_table = 'affaires' def __str__(self): return '{} - {}'.format(self.id, self.nom) class NC(models.Model): idaffaire = models.ForeignKey(Affaires, models.DO_NOTHING,verbose_name="N° d'affaire", db_column='idAffaire') idof = models.ForeignKey(AffairesOfs, models.DO_NOTHING,verbose_name="N° d'OF", db_column='idOf') idposte = models.ForeignKey(ProductionPostes, models.DO_NOTHING,verbose_name="Poste", db_column="idPoste") idrepere = models.ForeignKey(AffairesReperes, models.DO_NOTHING,verbose_name="Repère", db_column='idRepere') idnc = models.ForeignKey(Nc_type, models.DO_NOTHING,verbose_name="Type de NC", db_column='idNc_type') quantite = models.PositiveIntegerField(verbose_name="Quantité") dateajout = models.DateField(default=timezone.now, verbose_name="Date d'ajout", db_column='dateAjout') class Meta: managed = True db_table = 'qualite_Nc' serialize.py class NcSerializer(serializers.ModelSerializer): class Meta: model = NC fields = '__all__' JSON files : { "id": 1, "quantite": 1, "dateajout": "2020-04-08", "idaffaire": 1145, "idof": 1433, "idposte": 6271, "idrepere": 5361, "idnc": 1 }, { "id": 2, "quantite": 17, "dateajout": "2020-04-09", "idaffaire": 1205, "idof": 1290, "idposte": 5812, "idrepere": 7004, "idnc": 1 }, … -
Null field in database
I have a form with conditionned field my problem is that empty field is registered instead of NULL in database 2 last fields are conditionned on selected value just before (ran_bug) my 2 conditionned fields are required = false (even it should not be necessary ?) in my models, this fields are null=True and blank=True class Randomisation(models.Model): ran_ide = models.AutoField(primary_key=True) pay_ide = models.CharField("Patient's country code", max_length=2, null=True, blank=True) ran_str_num = models.CharField("Logical numerotation", max_length=2, null=True, blank=True) ran_bra = models.CharField("Arm", max_length=1, null=True, blank=True) bra_lib = models.CharField("Arm label", max_length=50, null=True, blank=True) ran_act = models.IntegerField("Activated line", null=True, blank=True) pat = models.CharField("Patient number", max_length=12, unique=True, null=True, blank=True) ran_nai = models.IntegerField("Patient birthdate (year)", blank=True) ran_sex = models.IntegerField("Sex", null=True, blank=True) ran_st1 = models.IntegerField("Stratification variable 1", blank=True) ran_st2 = models.IntegerField("Stratification variable 2", blank=True) ran_bug = models.IntegerField("Use of alternative randomization procedure?", null=True, blank=True) ran_dem_nom = models.CharField("Name of the person asking for randomization", max_length=12, null=True, blank=True) ran_dem_dat = models.DateTimeField("Date of demand", null=True, blank=True) ran_log = models.DateTimeField("User", null=True, blank=True) ran_dat = models.DateTimeField("Date", null=True, auto_now_add=True, blank=True) forms.py class RandomizationEditForm(forms.ModelForm): def __init__(self, request, *args, **kwargs): super(RandomizationEditForm, self).__init__(*args, **kwargs) self.user_country = request.session.get('user_country') self.language = request.session.get('language') self.user_site_type = request.session.get('user_site_type') PAYS = Pays.options_list(self.user_country,self.user_site_type,self.language) SEXE = [(None,''),(1,'Male'),(2,'Female')] STRATE_1 = [(None,''),(1,'strate 1 condition 1'),(2,'strate 1 condition 2')] STRATE_2 … -
Django facebook auth
Does django-social-auth cannot use for facebook auth anymore? As I trying to do a Django web app for fb auth but it just show a error: Authentication process canceled, any other ways for facebook auth in Django? -
How to save a string without explicit escaping?
I am trying to make my Django based API return an HTML snippet as a string. I am retrieving the HTML snippet through a BeautifulSoup bs4 element. To convert it into a string, I am simply using the str() operation as follows: test['key'] = str(bs4_element) When I retrieve this value from an API call, I get the HTML code, however, with backslash characters inserted throughout to escape special characters, somewhat like this: "key": "<div class=\"hackdown\"><style id=\"MathJax_SVG_styles\">... I want to render this retrieved HTML in a browser, however, the introduced backslash characters are not letting me do the same. How do I convert the bs4 element such that the above is prevented? -
Printing logs (of the running website) in VSCode console
hi all I have a web built with django framework and running with apache now. I am trying to print() but nothing is shown on the console, so I turned to logger and no luck still. This is one of my log I tried to print in the view.py, and I was expecting 'helloworld' could be shown on my console... import logging logger = logging.getLogger(__name__) logger.info('helloworld') is there anything i should be setting elsewhere? kindly help, thanks. -
Django conditional for rendering template
I am new to django and am trying to only render text which does not have the word 'After' or 'Before' in it. However this didnt break anything but it didnt actually remove those values? I looked at using a regex but this really isnt recommended for django templates. {% if "After" not in window.name or "Before" not in window.name %} {{window.event_id}}-{{window.name}} {% endif %} The codebase I am working on makes it almost impossible to remove these values in the models before you get to the template... I can only apologise for maintaining and putting up with this! -
Django modify table with jquery and ajax
I have a problem with my code. I'm trying to modify a data table utilizing the ajax code but does not work. I have create the json response in my view and add the script in my html code. When I try to edit my id.element in my shell recevice the following message: "GET /magazzino/?formId=1&formCodice=1&formCategoria=MATERIA+PRIMA&formSottocategoria=ciao HTTP/1.1" 200 16137". I don't know if it will help. This is my html code: {% extends "base/base.html" %} {% load crispy_forms_tags %} {% block content %} <main role="main" class="col-md-9 ml-sm-auto col-lg-10 px-4"> .... <h1>Approvvigionamenti</h1> <div class="row"> <div class="col-md-12 "> <h3>Registra materiale acquistato</h3> <form id="addUser" method="post"> {% csrf_token %} <div class="form-row"> <div class="form-group col-2 0 mb-0"> {{form.codice|as_crispy_field}} </div> <div class="form-group col-5 0 mb-0"> {{form.tipologia|as_crispy_field}} </div> <div class="form-group col-5 0 mb-0"> {{form.sottocategoria|as_crispy_field}} </div> </div> <div class="form-row"> <div class="col-md-2 "> <button class="btn btn-primary form-control" type="submit">Registra nel magazzino</button> </div> </div> </form> </div> <div class="col-md-12"> <br> <h3>Materiale registrato</h3> <table id="userTable" class="table table-striped"> <tr> <th>Codice</th> <th>Tipologia</th> <th>Sottocategoria</th> </tr> {% if materiale %} {% for element in materiale %} <tr id="element-{{element.id}}"> <td class="codice userData" name="codice">{{element.codice}}</td> <td class="categoria userData" name="categoria">{{element.tipologia}}</td> <td class="sottocategoria userData" name="sottocategoria">{{element.sottocategoria}}</td> <td align="center"> <button class="btn btn-success form-control" onClick="editUser({{element.id}})" data-toggle="modal" data-target="#myModal"> Modifica</button> </td> <td align="center"> <button class="btn btn-danger form-control" onClick="deleteUser({{user.id}})">DELETE</button> … -
Django Rest Framework, Why does separate serialization class for Image fields is been required?
When serializing a model that contain image field, separate serialization class was been required. Why can't we serialize the model completely in single class ? Serializer.py class ProfileSerializer(serializers.ModelSerializer): user = serializers.StringRelatedField(read_only=True) avatar = serializers.ImageField(read_only=True) class Meta: model = Profile fields = '__all__' class AvatarSerializer(serializers.ModelSerializer): class Meta: model = Profile fields =('avatar',) models.py class Profile(models.Model): user = models.OneToOneField(User,on_delete=models.CASCADE) bio = models.CharField(max_length=100,blank=True) avatar = models.ImageField(null=True,blank=True) def __str__(self): return self.user.username I am following a tutorial in Udemy GitLink : https://github.com/pymike00/The-Complete-Guide-To-DRF-and-VueJS/tree/master/05-DRF-LEVEL-THREE/profilesapi/profiles/api -
CSS loaded but not takes effect on the display
I always get stuck at CSS. I have a table, which works perfectly fine on large screens, and for mobile devices I want the table to be in a card format. I got an idea of creating another div and made the UI for mobile devices as well. And Using CSS, I tried... resp.css .immobile{ display: none; } .immonitor{ display: block; } @media screen and (max-width: 764px){ .immonitor{ display: none; } .immobile{ display: block; } } List.html <tbody> {% for order in order_list %} <div class="immonitor"> <tr> <td>{{ order.id }}</td> <td>{{order.client_name}}</td> <td>{{order.event_name}}</td> <td>{{order.event_date}}</td> <td>{{order.location}}</td> <td><a href="{% url 'order_detail' order.id %}">View</a></td> </tr> </div> <div class="immobile"> <tr> <td> <div> {{order.client_name}} <br> <h3>{{ order.id }}</h3> </div> <div class="pull-right"> {{order.event_name}}<br> {{order.event_date}}<br> {{order.location}}<br> </div> </td> </tr> </div> {% endfor %} </tbody> Now, the CSS doesn't have any effect on the table, it displays both card and table. And the CSS is perfectly loaded. -
Django getting the option value from a drop down menu
I am creating a Django page and I have two drop down menus. The first drop down menu will select a test. Then based on whatever test they selected, it should populate the second drop down menu with some ManyToMany fields. Here is my drop down menus <form> <select name="test"> {% for test in test %} <option value={{ test.name }}>{{ test.name }}</option> {% endfor %} </select> </form> <form> <select name="event"> {% for applicable_events in test %} <option value={{ applicable_events.name }}>{{ applicable_events.name }}</option> {% endfor %} </select> <input type="submit" value="Submit"> </form> The first form is correctly populating all of my tests. Now when the user selects one of the options in the first drop down, I am trying to get whatever they selected so that I can then populate the second drop down. Here are my two models.. class Event(models.Model): name = models.CharField(max_length=255) #test = models.ManyToManyField(Test) applicable_devices = models.ManyToManyField(Device) applicable_platforms = models.ManyToManyField(Platform) class Meta: verbose_name = 'Event' verbose_name_plural = 'Events' def __str__(self): return self.name class Test(models.Model): name = models.CharField(max_length=255) description = models.CharField(max_length=255, blank=True) applicable_device = models.ManyToManyField(Device) applicable_platform = models.ManyToManyField(Platform) applicable_events = models.ManyToManyField(Event) class Meta: verbose_name = 'Test' verbose_name_plural = 'Tests' def __str__(self): return self.name So you can see that for each … -
NoReverseMatch at /admin/r/1/APT2/ Reverse for 'apartment_create' not found. 'apartment_create' is not a valid view function or pattern name
I am trying to display a template on Django 3.0 and I get NoReverseMatch Error. Obviously, the url.py and views.py fail to show the template. I am on admin page adding a new record, but when I click show on site, I get this error. 1) What is the first part of admin/r/1/APT2 url mean especially the r/1? I believe this should redirect to apartment_create.html, but the view function does not exist or there is no url by that name. But according to me, there is. NoReverseMatch at /admin/r/1/APT2/ Reverse for 'apartment_create' not found. 'apartment_create' is not a valid view function or pattern name. views.py class ApartmentCreate(CreateView): # make a form based on this model form_class=ApartmentForm # if we only want to edit these two fields # fields = ('first_name', 'last_name') fields = '__all__' class Meta: widgets = {'geom': LeafletWidget()} # render this html file, pass a form object to that file template_name = 'rent_app:apartment_create.html' #template_name = 'rent_app/form_template.html' def get_success_url(self): return reverse('rent_app:apartment_create_success') urls.py from django.urls import path from . import views from django.contrib import admin app_name = 'rent_app' urlpatterns = [ path('', views.IndexView.as_view(), name='index'), path('admin/', admin.site.urls), path('apartment_create/<slug:apt_id>', views.ApartmentCreate.as_view(), name='apartment_create'), path('apartments/<int:pk>/', views.ApartmentUpdate.as_view(), name='apartment_update'), path('apartments/<int:pk>/delete/', views.ApartmentDelete.as_view(), name='apartment_delete'), -
Error during template rendering (NoReverseMatch) in Django
I am trying to submit the form to my view: in trending.html: {% extends 'djangobin/base.html' %} {% load static %} {% load humanize %} {% block title %} Trending {{ lang.name }} Snippets - {{ block.super }} {% endblock %} {% block main %} <h5><i class="fas fa-chart-line"></i> Trending {{ lang.name }} Snippets</h5> <hr> <table class="table"> <thead> <tr> <th>Title</th> <th>Date</th> <th>Hits</th> <th>Language</th> <th>User</th> </tr> </thead> <tbody> {% for snippet in snippets %} <tr> <td><i class="fas fa-globe"></i> <a href="{{ snippet.get_absolute_url }}">{{ snippet.title }}</a> </td> <td title="{{ snippet.created_on }}">{{ snippet.created_on|naturaltime }}</td> <td>{{ snippet.hits }}</td> <td><a href="{% url 'trending_snippets' snippet.language.slug %}">{{ snippet.language }}</a></td> {% if not snippet.user.profile.private %} <td><a href="{{ snippet.user.profile.get_absolute_url }}">{{ snippet.user.username|title }}</a></td> {% else %} <td>-</td> {% endif %} </tr> {% empty %} <tr class="text-center"> <td colspan="4">There are no snippets.</td> </tr> {% endfor %} </tbody> </table> {% endblock %} in views.py: from django.shortcuts import HttpResponse, render, redirect, get_object_or_404, reverse from .forms import SnippetForm from .models import Language, Snippet def trending_snippets(request, language_slug=''): lang = None snippets = Snippet.objects if language_slug: snippets = snippets.filter(language__slug=language_slug) lang = get_object_or_404(Language, slug=language_slug) snippets = snippets.all() return render(request, 'djangobin/trending.html', {'snippets': snippets, 'lang': lang}) in urls.py: from django.conf.urls import url from . import views as views urlpatterns = [ url('^trending/$', … -
Django Sum positive values seperate from negative values
Can you sum positive values seperately from negative values? I have a table that looks like this: class Order(models.Model): date = models.DateField() amount = models.DecimalField() I'm looking to get a queryset that sums the postive amounts seperate from the negative amounts and groups by week: Year Week Sum of positive amounts Sum of negative amounts I'm able to get all positive amounts per week seperately by doing: Order.objects.filter(amount__gt=0).annotate(year_week=Trunc('date', 'week', output_field=DateField())).\ annotate(year=ExtractYear('year_week')).annotate(week=ExtractWeek('year_week')).\ values("year_week", "year", "week").annotate(value=Sum("amount")).order_by("-year_week") I can do this again for the negative value, but then I have two seperate querysets. Can I merge them efficiently without looping manually or is there a way to do both in a single query? -
How to correct TypeError: Unicode-objects must be encoded before hashing? - django - python
Does anyone know how to solve the following error ------activation_key = hashlib.sha1(short_hash+base).encoding.hexdigest() TypeError: Unicode-objects must be encoded before hashing----- all the code regarding the problem is attached below. All help appreaciated! import stripe import random import hashlib from django.conf import settings from django.contrib.auth.signals import user_logged_in from django.db.models.signals import post_save from django.contrib.auth.models import User from django.dispatch import receiver from .models import Profile, UserStripe, EmailConfirmed stripe.api_key = settings.STRIPE_SECRET_KEY def get_create_stripe(user): new_user_stripe, created = UserStripe.objects.get_or_create(user=user) if created: customer = stripe.Customer.create( email = str(user.email) ) new_user_stripe.stripe_id = customer.id new_user_stripe.save() @receiver(post_save, sender=User) def create_profile(sender, instance, created, *args, **kwargs): user=instance if created: get_create_stripe(user) email_confirmed, email_is_created = EmailConfirmed.objects.get_or_create(user=user) if email_is_created: short_hash = hashlib.sha1(str(random.random()).encode('utf-8')).hexdigest()[:5] base, domain = str(user.email).split("@") activation_key = hashlib.sha1(short_hash+base).encode('utf-8').hexdigest() email_confirmed.activation_key = activation_key email_confirmed.save() emailconfirmed.activate_user_email() -
'NoneType' object has no attribute in the form init
Gives me that error 'NoneType' object has no attribute 'tutor_courses', i am trying to get query set with courses where request.user is in the tutor field. How to fix that? models.py class Course(models.Model): title = models.CharField(max_length=255) slug = models.SlugField(max_length=150, null=True, blank=True) description = models.TextField() image = models.ImageField(upload_to='courses/course_images',blank=True,null=True) cover = models.ImageField(upload_to='courses/course_covers',blank=True,null=True) tutor = models.ForeignKey(User,related_name='tutor_courses',on_delete=models.CASCADE) students = models.ForeignKey(User,related_name='course_students',blank=True,on_delete=models.CASCADE,null=True) created = models.DateTimeField(default=timezone.now) updated = models.DateTimeField(auto_now=True) category = models.ForeignKey(CourseCategories,on_delete=models.CASCADE) certificate = models.ImageField(upload_to='courses/course_certificates',blank=True,null=True) languages = LanguageField(blank=True) rank_score = models.FloatField(default=0.0) price = models.FloatField(default=0.0) discount_price = models.FloatField(blank=True, null=True) forms.py class SectionForm(forms.ModelForm): def get_tutor_courses(self): return self.user.tutor_courses course = forms.ModelChoiceField(queryset=Course.objects.all()) def __init__(self, *args, **kwargs): user = kwargs.pop('user', None) super(SectionForm, self).__init__(*args, **kwargs) tutor_courses = user.tutor_courses.all() self.fields['course'].queryset = tutor_courses if not tutor_courses: self.fields['course'].help_text = "You need to <b>create</b> a course to create sections in it" class Meta: model = CourseSections fields = ('title','course') -
Django Checkout form not being saved
Hi I'm trying to develop an e-commerce site with Django. So I'm at this point where, users can add items to their cart, proceed to checkout but for some reason, my checkout form is not being saved. I made sure that I have registered my models, and ran migrations, but everytime I fill out my form and go to check in my admin panel, it says: 0 user addresses. Also after clicking the submit button, it's not getting redirected to checkout, rather it's being redirected to: http://127.0.0.1:8000/checkout/?csrfmiddlewaretoken=a8vjroAuxAcGFjQmwZ6CdBL5DhYui0vKVnANaoi8lxY33uqjmLXaT90tze6Anyun&address=123+Main+Street%2C+234+Irvine&address2=234+Irvine&state=MA&country=United+States&zipcode=55525&phone=8773140742&billing=on What is the problem? Can anyone please help me out? My views.py: @login_required def checkout(request): if request.method == 'POST': address_form = UserAddressForm(request.POST) if address_form.is_valid(): new_address = address_form.save(commit= False) new_address.user = request.user new_address.save() return redirect(reverse("checkout")) else: address_form = UserAddressForm() context = {"address_form": address_form} template = "orders/checkout.html" return render(request, template, context) My checkout.html: <form method="POST" action=''> {% csrf_token %} <fieldset class="form-group"> {{ address_form|crispy }} </fieldset> <div class="form-group"> <input type="submit" class="btn btn-outline-dark" value="Place Order"/> </div> </form> My urls.py: from orders import views as orders_views path('checkout/', orders_views.checkout, name='checkout'), -
How to addd Content Security policy to heroapp?
I created a Python Heroku app. I want to put Content-Security-Policy to the header. I did some google search, but I still very confused. Some people said to add "headers": { "/**": { "Content-Security-Policy": "default-src 'self'; script-src https://static.ads-twitter.com https://www.google-analytics.com; img-src 'self' https://s3.amazonaws.com https://twitter.com https://pbs.twimg.com; font-src 'self' https://fonts.gstatic.com; style-src 'self' https://fonts.googleapis.com; frame-ancestors 'none';" } } into static.json. However, I don't have this file in my project. How should I link it? Thanks! -
How to correctly use MongoDB client connections
I'm building a simple test web application that stores info users enter in a mongo database. No errors come up, but I always get the following warning (Im using django) when using the client. /home/<User>/.local/share/virtualenvs/<Name>/lib/python3.7/site-packages/pymongo/topology.py:155: UserWarning: MongoClient opened before fork. Create MongoClient only after forking. See PyMongo's documentation for details: http://api.mongodb.org/python/current/faq.html#is-pymongo-fork-safe "MongoClient opened before fork. Create MongoClient only " After checking out the API docs, it seems that the warning pops up when using fork() which im not explicitly using. Maybe something that I'm doing is actually triggering the fork. I create my mongo client at __init__ and then import the variable to my mongoDB handler. Then, that client that I imported is used inserting or updating items in the DB. What is the correct way of creating and then using a mongo client to prevent this warning from appearing? -
Confused by Django Rest Framework Permissions
I have a complex set of permissions that I want to apply to my views, but I'm having a hard time understanding where to put them. Here are my basic permissions. List all projects: If the user is the owner and if their account is active Or if they are a superuser And the object is not private to a different user Or they are a member of the assigned group Problem is that when I add this logic to the permissions classes of the ModelApiViewset, it returns every project. How do I get it to show only the ones that meet the above criteria? To further illustrate the example, I have 2 accounts right now: my superuser, and a test_user. test_user is not an admin or staff account, and is not part of the manager group. The test_user account is an owner of project 2, but not project 1. But if I use the test_user credentials, I see both project 1 and 2: [ { "id": 1, "name": "Test Private Project", "slug": "test-private-project", "description": "Just testing the super private project", "group": { "name": "manager", "id": 1 }, "created_date": "2020-04-20T18:04:20.666564Z", "modified_date": "2020-04-20T18:04:20.666594Z", "owner": { "username": "admin", "full_name_display": "Administrator", "photo": null, … -
Why I cannot update my heroku app via gitlab CI
I have started messing around with Heroku docker and Django. I have followed the instructions of a tutorial and everything works great. My app is on Heroku, but I cannot update my App. According to the tutorial, when I push my new code to Gitlab the pipeline is run and it deploys the new code to my app in Heroku. Although the pipeline passes nothing changes on my Heroku app, what am I doing wrong? Here is my .gitlab-ci.yml: image: docker:stable services: - docker:dind variables: DOCKER_DRIVER: overlay2 HEROKU_APP_NAME: myapp HEROKU_REGISTRY_IMAGE: registry.heroku.com/${HEROKU_APP_NAME}/web stages: - build_and_deploy build_and_deploy: stage: build_and_deploy script: - apk add --no-cache curl - docker login -u _ -p $HEROKU_AUTH_TOKEN registry.heroku.com - docker pull $HEROKU_REGISTRY_IMAGE || true - docker build --cache-from $HEROKU_REGISTRY_IMAGE --tag $HEROKU_REGISTRY_IMAGE --file ./Dockerfile "." - docker push $HEROKU_REGISTRY_IMAGE - chmod +x ./release.sh And this is the release.sh #!/bin/sh IMAGE_ID=$(docker inspect ${HEROKU_REGISTRY_IMAGE} --format={{.Id}}) PAYLOAD='{"updates": [{"type": "web", "docker_image": "'"$IMAGE_ID"'"}]}' curl -n -X PATCH https://api.heroku.com/apps/"${HEROKU_APP_NAME}"/formation \ -d "${PAYLOAD}" \ -H "Content-Type: application/json" \ -H "Accept: application/vnd.heroku+json; version=3.docker-releases" \ -H "Authorization: Bearer ${HEROKU_AUTH_TOKEN}" Last but not least here are the last messages of the pipeline, as I think that the rest of them are irrelevant to my question. Successfully built dbd1d36dea04 … -
Initial value does not appears as selected value in my form?
I have a form and I want to set initial value does not appears as selected PAYS is a list like [(None, ''), (2, 'Ivory coast'), (1, 'France')] self.user_country = 1 I tought it was a problem of field format (charfield in my model) and try to manage with str() but it does not change forms.py class RandomizationEditForm(forms.ModelForm): def __init__(self, request, *args, **kwargs): super(RandomizationEditForm, self).__init__(*args, **kwargs) self.user_country = request.session.get('user_country') self.language = request.session.get('language') self.user_site_type = request.session.get('user_site_type') PAYS = Pays.options_list(self.user_country,self.user_site_type,self.language) self.fields["pay_ide"] = forms.ChoiceField(label = "Patient's country code", widget=forms.Select, choices=PAYS, initial = self.user_country, disabled=True) self.fields["ran_dem_dat"] = forms.DateField( label = "Date of demand", initial = timezone.now(), required = True, ) self.fields['ran_dem_dat'].widget.attrs.update({ 'autocomplete': 'off' }) class Meta: model = Randomisation fields = ('pay_ide','ran_str_num','ran_bra','bra_lib','ran_act','pat','ran_nai','ran_sex','ran_st1','ran_st2','ran_bug','ran_dem_nom','ran_dem_dat',) models.py class Pays(SafeDeleteModel): """ A class to create a country site instance. """ _safedelete_policy = SOFT_DELETE_CASCADE pay_ide = models.AutoField("Code number", primary_key = True) pay_nom_eng = models.CharField("Nom", max_length = 150) pay_nom_fra = models.CharField("Nom", max_length = 150) pay_abr = models.CharField("Code lettre", max_length = 3) pay_ran = models.IntegerField("Randomization opened in the country? (y/n)",default=0, null=True, blank=True) log = HistoricalRecords() class Meta: db_table = 'adm_pay' verbose_name_plural = 'Pays' ordering = ['pay_nom_fra', 'pay_ide'] permissions = [ ('can_manage_randomization','Can activate randomization'), ] @classmethod def options_list(cls,pays,type,language): if type == 'International' or … -
django radio button on request.POST is not working
i am trying to read the value from the radio.input in the form below using def question_detail(request,question_id,quiz_id): q = Quiz.objects.get(pk = quiz_id) que = Question.objects.get(pk = question_id) count = q.question_set.count() try: selected_choice = que.answer_set.get(pk=request.POST['choice']) except(KeyError, Answer.DoesNotExist): come = que.rank came = come + 1 later_question = q.question_set.get(rank=came) return render(request, 'app/question_detail.html',{'que': que, 'count': count, 'later_question': later_question}) else: if selected_choice.correct is True: try: come = que.rank came = come + 1 later_question = q.question_set.get(rank=came) except: come = que.rank came = come later_question = q.question_set.get(rank=came) else: come = que.rank later_question = q.question_set.get(rank=come) return render(request, 'app/question_detail.html',{'count': count, 'que': que, 'later_question': later_question}) but when i try to access the webpage,it throws an Keyerror,please help <form action="{% url 'app:detail' quiz_id=que.quiz.id question_id=later_question.id%}" method="post">{% csrf_token%} {% for choice in que.answer_set.all %} <input type="radio" name='choice' value="{{choice.id}}"> <label>{{choice.answer}}-{{choice.correct}}-{{choice.rank}}</label><br> {% endfor %}