Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
In Django, how can I delete object inside template by clicking link?
I made a notification system. When "B" user comments at "A" user's post, notification sends to A. This is my part of my code. models.py from django.db import models from freeboard.models import FreeBoardComment from users.models import CustomUser class Notification(models.Model): TYPE_CHOCIES = ( ("FreeBoardComment", "FreeBoardComment"), ) creator = models.ForeignKey(CustomUser, on_delete=models.CASCADE, null=True, related_name="creator") to = models.ForeignKey(CustomUser, on_delete=models.CASCADE, null=True, related_name="to") notification_type = models.CharField(max_length=50, choices=TYPE_CHOCIES) comment = models.CharField(max_length=1000, blank=True, null=True) post_id = models.IntegerField(null=True) class Meta: ordering = ["-pk"] def __str__(self): return "From: {} - To: {}".format(self.creator, self.to) notification/views.py from django.views.generic import ListView from .models import Notification def create_notification(creator, to, notification_type, comment, post_id): if creator.email != to.email: notification = Notification.objects.create( creator=creator, to=to, notification_type=notification_type, comment=comment, post_id=post_id, ) notification.save() class NotificationView(ListView): model = Notification template_name = "notification/notification.html" freeboard/views.py ... @login_required def comment_write(request, pk): post = get_object_or_404(FreeBoardPost, pk=pk) if request.method == 'POST': form = CreateFreeBoardComment(request.POST) if form.is_valid(): comment = form.save(commit=False) comment.comment_writer = request.user comment.post = post comment.save() # 포인트 award_points(request.user, 1) ### NOTIFICATION PART!!!! ### create_notification(request.user, post.author, "FreeBoardComment", comment.comment_text, post.pk) ### NOTIFICATION PART !!! ### return redirect("freeboard_detail", pk=post.id) else: form = CreateFreeBoardComment() return render(request, "bbs/freeboard/free_board_comment.html", {"form": form}) notification.html {% extends "base.html" %} {% block css_file %} <link href="/static/css/notification/notification.css" rel="stylesheet"> {% endblock %} {% block content %} <ul class="list-group"> … -
How to login to a user already created without password?
I have a web page developed in django that uses the django authentication system. To log in to a user, I need their username and password, but I would like to create a login that allows me to enter only by entering the username without the need to use a password, is this possible? Django View class LoginView(SuccessURLAllowedHostsMixin, FormView): """ Display the login form and handle the login action. """ form_class = AuthenticationForm authentication_form = None redirect_field_name = REDIRECT_FIELD_NAME template_name = 'registration/login.html' redirect_authenticated_user = False extra_context = None @method_decorator(sensitive_post_parameters()) @method_decorator(csrf_protect) @method_decorator(never_cache) def dispatch(self, request, *args, **kwargs): if self.redirect_authenticated_user and self.request.user.is_authenticated: redirect_to = self.get_success_url() if redirect_to == self.request.path: raise ValueError( "Redirection loop for authenticated user detected. Check that " "your LOGIN_REDIRECT_URL doesn't point to a login page." ) return HttpResponseRedirect(redirect_to) return super().dispatch(request, *args, **kwargs) def get_success_url(self): url = self.get_redirect_url() return url or resolve_url(settings.LOGIN_REDIRECT_URL) def get_redirect_url(self): """Return the user-originating redirect URL if it's safe.""" redirect_to = self.request.POST.get( self.redirect_field_name, self.request.GET.get(self.redirect_field_name, '') ) url_is_safe = is_safe_url( url=redirect_to, allowed_hosts=self.get_success_url_allowed_hosts(), require_https=self.request.is_secure(), ) return redirect_to if url_is_safe else '' def get_form_class(self): return self.authentication_form or self.form_class def get_form_kwargs(self): kwargs = super().get_form_kwargs() kwargs['request'] = self.request return kwargs def form_valid(self, form): """Security check complete. Log the user in.""" auth_login(self.request, form.get_user()) … -
Django 3 . Save Pillow Image to ImageField
I am migrating some code to python 3 and django 3. The image that is being saved is doesn't work, this is the error: Error interpreting JPEG image file (Not a JPEG file: starts with 0x78 0x73) This is the code: import requests from io import StringIO, BytesIO from PIL import Image r = requests.get(img_url) image = Image.open(BytesIO(r.content)) img_file = ContentFile(image.tobytes(), slugify("0_" + card.nombre)) card.image_base.save("0_" + carta_obj.nombre, img_file, save=True) card.image_base is a ImageField. Is there a standard process for this? Pillow + BytesIO + Django? -
'EquipmentOrder' object has no attribute 'equipments'
I am trying to add a new e-commerce feature to my python/django project and i keep on getting an error when i use the add to cart button. I am really frustrated because i have been battling it out for weeks now i really need help. Thanks in advance. here is the EquipmentOrder model class EquipmentOrder(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE) equipment = models.ManyToManyField(EquipmentOrderItem) start_date = models.DateTimeField(auto_now_add=True) ordered_date = models.DateTimeField() ordered = models.BooleanField(default=False) objects = models.Manager() def __str__(self): return self.user.username here is the add to cart view def add_to_cart(request, slug): equipment = get_object_or_404(models.Equipment, slug=slug) equipment_order_item, created = models.EquipmentOrderItem.objects.get_or_create( equipment=equipment, user=request.user, ordered=False ) equipment_order_qs = models.EquipmentOrder.objects.filter(user=request.user, ordered=False) if equipment_order_qs.exists(): equipment_order = equipment_order_qs[0] # check if equipment order item is in order if equipment_order.equipment.filter(equipment__slug=equipment.slug).exists(): equipment_order_item.quantity += 1 equipment_order_item.save() messages.info(request, "This item quantity was updated.") else: messages.info(request, "This item was added to your cart.") equipment_order.equipments.add(equipment_order_item) else: ordered_date = timezone.now() equipment_order = models.EquipmentOrder.objects.create(user=request.user, ordered_date=ordered_date) equipment_order.equipments.add(equipment_order_item) messages.info(request, "This item was added to your cart.") return redirect("create:equipment_detail", slug=slug) -
StreamingHttpResponse: return database connection to pool
If you have a StreamingHttpResponse returned from a Django view, when does it return any database connection to the pool? If by default it does it once the StreamingHttpResponse has completed, is there a way to make return the connection earlier? def my_view(request): # Some database queries using the Django ORM def yield_data(): # A generator, and # no database queries using the Django ORM return StreamingHttpResponse( yield_data(), status=200 ) -
validation on createview django
I am using generic create view to create a product , the code below creates a product, but how can I raise an error if a product name is duplicated in DB, or product already exist . in model product name is required =True class ProductBaseView(generic.CreateView): model = Product fields = ['ProductName'] template_name = "products.html" def form_valid(self, form): form.instance.user = self.request.user return super().form_valid(form) -
Updating django database with paypal transaction details
I have a django project that takes payments and I need to update my database with a new owed balance of 0 after the paypal transaction is complete. I'm a newbie to javascript and the paypal docs aren't being helpful. here's my code: I need to create a new payment from this and update the invoice with the correct amount owed. This is the payment page where the payment happens, make_payment.html. Payments go through successfully. {% extends "base.html" %} {% load crispy_forms_tags %} {% block content %} <div class="card card-primary"> <div class="card-header"> <h2>Make a Payment</h2> </div> <div class="float-right list-group-item"> <p class="font-weight-bold float-left p-0 m-0">Invoice Number</p> <p class="font-weight-bold float-right p-0 m-0">{{ object.pk }}</p> </div> <div class="float-right list-group-item"> <p class="font-weight-bold float-left p-0 m-0">Amount Billed</p> <p class="font-weight-bold float-right p-0 m-0">${{ object.amount_billed }}</p> </div> <div class="float-right list-group-item"> <p class="font-weight-bold float-left p-0 m-0">Amount Owed</p> <p class="font-weight-bold float-right p-0 m-0">${{ object.amount_owed }}</p> </div> <div class="float-right list-group-item"> <!-- Set up a container element for the button --> <div id="paypal-button-container"></div> </div> <div class="float-right list-group-item"> <a href="{% url 'invoice-list'%}"><button type="button" class="btn btn-primary float-right">Go back</button></a> </div> </div> <!-- Include the PayPal JavaScript SDK --> <script src="https://www.paypal.com/sdk/js?client-id=AeFSJDq8sonOdMT62SM-B040Eo4YWi6IS6xsPqDe-eamtEbGs9Jtbf5AbtwjnPC45LjFPOCa4sNoHEIt&currency=USD&disable-funding=credit&commit=false"></script> <script> // Render the PayPal button into #paypal-button-container paypal.Buttons({ // Set up the transaction … -
How to style a Django ModelForm
Does someone know how to style this form with bootstrap? from django.forms import ModelForm from .models import * from django import forms class OrderForm(ModelForm): class Meta: model = Order fields = ('__all__') ** ^ forms.py ^** class Order(models.Model): customer = models.ForeignKey(Customer, null=True, on_delete= models.SET_NULL) product = models.ForeignKey(Product, null=True, on_delete= models.SET_NULL) date_created = models.DateTimeField(auto_now_add=True, null=True) status = models.CharField(max_length=200, null=True, choices=STATUS) def __str__(self): return self.product.name This is the model where the form is about -
1 form, 1 class based view, 2 models, how?
I'm new to Django so explain it like I'm 5 I've been racking my brain(and the internet), not even sure its actually possible. I've tried a lot of different links/guides but either the concept is not going in or I'm trying to do something that isn't possible. My Idea is to have: Parent/Child Model, Class Based View, one form in the template. I'm open to any suggestion and I KNOW inline-formset is probably the right answer but every example I've found is years old, the Django documentation(v3.0) doesn't seem to differ from examples. The closest I've so far managed to come is having the template show the children, I can get the parent in the same template but it isn't the same form. Where am I going wrong or what base knowledge do I need to understand this? please don't just link me to the Django docs for inline-formset with no explanation Many thanks -
Why is not `url` showing up in the DRF Response
I can't get url to be returned when I use it in a HyperlinkedModelSerializer. # model.py class Promotion(TimeStampedMixin, models.Model): name = models.CharField(max_length=300) # ... # views.py class PromotionViewSet(viewsets.ModelViewSet): serializer_class = PromotionSerializer queryset = Promotion.objects.all() def retrieve(self, request, *args, **kwargs): instance = self.get_object() serializer = self.get_serializer(instance, context={'request': request}) return Response(serializer.data) # serializers.py class PromotionSerializer(serializers.HyperlinkedModelSerializer): url = serializers.HyperlinkedRelatedField( view_name="campaigns:promotion-detail", read_only=True ) class Meta: model = Promotion fields = ( "url", "id", "name", ) The JSON output I receive when querying curl -X GET http://localhost/api/promotion/2/: {"id":2,"name":"My promotion"} If I use reverse to check if the view_name in the HyperlinkedRelatedField exists, it prints the correct URL. My question is: why doesn't the url show up in the response? It works any all my other views (comparing code with classes that works hasn't helped). Read the DRF documentation but I see nothing new (using version 3.11.0) -
linking search results to a its own detail page
This is a django related question: I am doing an assignment where we are playing around making a search bar then afterwards letting each individual search result linked to its own page with more details. In this context we are doing a job search engine and I need assistance in when you click each jobs posting, it takes you to a separate page with more info about the job. We already made templates for all the pages. I understand that we have to make a request to the api again after doing it for the view function in the search bar and also use templating got fill up out the detailed search results.Im just not sure how would I apply these concepts to the html file that w ehave. here's the code View function code import requests from django.shortcuts import render def home(request): context = { 'example_context_variable': 'Change me.', } return render(request, 'pages/home.html', context) def search_results(request): search_query = request.GET['searchterm'] context = { 'result_count': 0, 'search_term': search_query, } context['results_count'] = 0 url = 'https://jobs.github.com/positions.json?location=bay+area&description=' url += search_query response = requests.get(url) results_data = response.json() job_list =[] for result in results_data: job_list.append(result) context['job_results'] = job_list return render(request, 'pages/search_results.html', context) **detailed Search Results Html … -
django 1.2 (jinja) form that takes in information and emails it
I would like to add a small form on an already existing html template. When the information is filled in and sent to the backend, i would like it to them be emailed to a specific email address. I am not sure how to do this. So far i have the route Route(r'/educationEmail', 'handlers.site_handlers.EducationEmailHandler', name='education_email'), I have the class set up: class EducationEmailHandler: template_filename = 'education_email' def get(self): pass def put(self): pass I have the form <form methos="POST" action="/educationEmail"> Name: <input type="text" name="fname" required><br> Email: <input type="text" name="email" required><br> <input type="submit" value="Submit"> </form> How can i put this together to make it function how i want it to? Thanks -
How do I add a custom filter in a django child model?
I'm pretty new to django and I'm working on an existing app that I did not write. The app handles some document management activities and whenever a document thumbnail is displayed, it currently displays all associated metadata. In my case, some of the metadata rows are unwanted (guid's are not very human friendly) and I therefore want to exclude some of the metadata. There are principally three tables, one for Documents, One for Metadata types, and a join table that ties them together. The guts of the join table are like so: class DocumentMetadata(models.Model): document = models.ForeignKey( on_delete=models.CASCADE, related_name='metadata', to=Document, verbose_name=_('Document') ) metadata_type = models.ForeignKey( on_delete=models.CASCADE, to=MetadataType, verbose_name=_('Type') ) value = models.CharField( blank=True, db_index=True, ), max_length=255, null=True, verbose_name=_('Value') ) The current code does this as it builds the thumbnail: queryset=context['object'].metadata.all() I've got a test version like so: context['object'].metadata.exclude(name__endswith='_Id') I have a convention where the guid metadata field name ends in _Id, and this filter works fine and does what I want it to do right now. I don't like it though. In future, I want to add a human_readable boolean field to the metadata type table and there are other places in the code base where I'll want to sift … -
JavaScript dropdown hidden in a css grid column
I have an admin header from Django which is divided in 2 columns with css grid. I included a JavaScript dropdown effect on the user icon to show other elements like "Change Password" and "Log Out" but the problem is that dropdown stays hidden inside the column, doesn't show outside. How can I fix this? Thanks in advance, A newbie in web development Images attached will show exactly the situation described above: Forced height of header to show the dropdown: Below you can find partial Django code: {% load i18n static %}<!DOCTYPE html> {% get_current_language as LANGUAGE_CODE %}{% get_current_language_bidi as LANGUAGE_BIDI %} <html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}> <head> <title>{% block title %}{% endblock %}</title> <link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}"> {% block extrastyle %}{% endblock %} {% if LANGUAGE_BIDI %}<link rel="stylesheet" type="text/css" href="{% block stylesheet_rtl %}{% static "admin/css/rtl.css" %}{% endblock %}">{% endif %} {% block extrahead %} {{ block.super }} <script> /* When the user clicks on the button, toggle between hiding and showing the dropdown content */ function openDropdown() { document.getElementById("myDropdown").classList.toggle("show"); } // Close the dropdown if the user clicks outside of it window.onclick = function(event) { if … -
Save a list of strings in django sql-lite database from view
I want to save a list of strings in django sql-lite database from view. Here is my piece of code def home(request): if request.method=='POST': tags=request.POST['tag'] tweets=scrape(tags) tweets=preprocessing(tweets) tweet=Tweet() tweet.text='save the tweet' tweet.save() return render(request,'home.html',{"tweet":tweets}) else: all_tweets=Tweet.objects.all return render(request,'home.html',{"old_tweet":all_tweets}) The following three-line can save a single string (tweet) in my database tweet=Tweet() tweet.text='save the tweet' tweet.save() But I have a list of strings (tweets) that I want to save in the database. I want to save the output of preprocessing(tweets) which is a list in my database. If I use a loop, I think it makes the process too much slow. So is there any efficient way. Thanks -
How do I insert multiple blocks into the base.html in Django?
Possibly I'm misunderstanding the inheritance of templates in Django, but why doesn't the below code work? Both child templates are inheriting from the parent template with different block names. base.html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>test</h1> {% block index %}{% endblock %} {% block nav %}{% endblock %} </body> </html> index.html {% extends 'blog/base.html' %} {% block index %} <h1>This is the index.html page</h1> {% endblock %} nav.html {% extends 'blog/base.html' %} {% block nav %} <h1>This is the nav.html</h1> {% endblock %} I'm trying to grasp the concept of using multiple blocks so that I can place them on the templates that I need. -
django-ckeditor jquery call to display real-time editing
I am creating a django app that uses a RichTextField from django-ckeditor. I'm displaying a side-by-side of what the form will look like once submitted by using jQuery for my input fields. When transitioning from a TextField to RichTextField my jQuery function stopped working. // project.js // old keyup function for TextField var textInput = $('#id_text'); function setText(value) { $('#preview-text').text(value) } setText(textInput.val()) textInput.keyup(function () { var newText = $(this).val() setText(newText) } I have attempted this: // project.js // new jQuery function var textInput = CKEDITOR.instances['id_text'].getData(); function setText(value) { $('#preview-text').text(value) } setText(textInput) // removed .val() as this caused a TypeError: textInput.val is not a function textInput.keyup(function () { var newText = $(this).val() setText(newText) } This gives me TypeError: textInput.keyup is not a function. I would like to continue using the .keyup() function as a prompt for updating the side-by-side preview, but it appears it will need to be reworked. // project.js var textInput = $('textarea#id_text'); // specifying textarea yields [object Object] in HTML function setText(value) { $('#preview-text').text(value) } setText(textInput) textInput.keyup(function () { var newText = $(this).val() setText(newText) } The above function yields [object Object] in the <span id='preview-text'></span>. Previous post I used for the CKEDITOR.instance[].getData() call here. Any insights into how … -
How save selected option in django template?
After submitting the form, I can't save selected choice. Please help. <select id="category" class="form-control" name="category"> {% for option in categories %} <option value="{{option.name}}" {% if option.name == 'I don't know what's dynamic value write here(or how get value of POST-parameter' %}selected{% endif %}> {{ option.name }} </option> {% endfor %} </select> -
Catch post_save signal
Django 3.0.5. apps.py from django.apps import AppConfig from django.db.models.signals import post_save from django.dispatch import receiver class NewsConfig(AppConfig): name = 'news' def ready(self): from .models import News # Breakpoint 0 @receiver(post_save, sender=News) def handle_news_save(sender, **kwargs): print("Working") a = 0 # Breakpoint 1 models.py class News(models.Model): news_text = models.TextField() settings.py INSTALLED_APPS = [ ... 'news.apps.NewsConfig', ] The problem At Breakpoint 0 the interpreter stops when I run the application. That is at the next line Django gets to know that I'm catching the signal. But when I save an instance of News in admin site, at Breakpoint 1 the interpreter doesn't stop. And, of course, no printing happens. Could you help me catch the signal? -
Python Django SyntaxError: invalid syntax
I try today crete my first own site ,but i have error . When i run manage.py : File "manage.py", line 16 ) from exc ^ SyntaxError: invalid syntax In folder have : mysite/ manage.py mysite/ asgi.py __init__.py settings.py urls.py wsgi.py Maybe I wrong insall django or its another error ? Thanks -
Djnago: how to sum value for a specific field
I have the following situation Sottocategoria | Quantità type_1 | 100.00 type_2 | 100.00 type_1 | 100.00 I would to obtain a new table that give me the following view: Sottocategoria | Quantità type_1 | 200.00 type_2 | 100.00 here my models.py with "quantita" and "sottocategoria" fields' situation: class Tipologia(models.Model): nome= models.CharField('Categoria', max_length=30) class Sottocategoria(models.Model): tipologia = models.ForeignKey(Tipologia, on_delete=models.CASCADE) name = models.CharField( max_length=30) class Materiale(models.Model): conto = models.CharField('Conto', max_length=30, choices=( ('MATERIA PRIMA', 'MATERIA PRIMA'), ('SUSSIDIARIA', 'SUSSIDIARIA'), )) tipologia = models.ForeignKey(Tipologia, on_delete=models.SET_NULL, null=True) sottocategoria = models.ForeignKey(Sottocategoria, on_delete=models.SET_NULL, null=True) quantita=models.DecimalField('Quantità',max_digits=5) -
Django Python, Pass a dictionary and print it's content in html template
I have this function just for learning and want to print out the xxxxx and yyyyy on the html page. I have tried everything but the best I can get is aaa bbb def index(request): template = loader.get_template('bsapp/index.html') listan = {'aaa':'xxxxxx','bbb':'yyyyyy'} context = { 'listan': listan } return HttpResponse(template.render(context, request)) This is the html page, how would I write it?: {% for item in listan %} {{ item }}<br> {% endfor %} -
Save anonymous user data and map with the user after registeration or login in django
Hello I have an app where user come he get list of items he select item as many he wish then he click on "add to cart " where he get redirect to page where he sees the item selected and total price , Now to proceed further i want user to login or register and after he login or register he gets map with the item and price he selected and data get save in database i have an app which works perfect for login user but i want it for anonymous user who first select items and then go for registeration/login. models.py class UserSelectTest(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) testselected = models.TextField() class UserTest(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) name = models.CharField(max_length=255) email = models.EmailField() number = models.IntegerField() location = models.CharField(max_length=255) time = models.IntegerField() totalprice = models.CharField(max_length=255,null=True) test_submitted = models.BooleanField() views.py def ResultTest(request): var = request.POST.get('selectedTests') abc = UserSelectTest() abc.user = request.user abc.testselected = request.POST['selectedTests'] abc.save() def PostTest(request): if request.method == 'POST': test = UserTest() test.user = request.user test.name = request.POST['name'] test.email = request.POST['email'] test.number = request.POST['number'] test.location = request.POST['location'] test.time = request.POST['time'] test.totalprice = request.POST['price'] test.test_submitted = True test.save() I views i have two function where "ResultTest" stores the … -
How to submit value when link is clicked?
I want to print id of link when it clicked. I have tried below code but being naive i do not know what is wrong?? -
Why isn't Django passing ImageField data via ListView to a template?
This is my first programming project, and first question on StackOverflow - so please be gentle! I've been good and checked all the relevant existing questions and answers - apologies in advance if I've missed it. I have a model that contains images: models.py class Image(models.Model): image = models.ImageField(upload_to='portfolio-images/', blank=False, null=False) uploaded_by = get_user_model() uploaded = models.DateTimeField(auto_now_add=True, editable=False) alt_text = models.CharField(verbose_name='Alternate text', max_length=200, blank=True, null=True) def __str__(self): return self.alt_text def get_absolute_url(self): return reverse('image_detail', args=[str(self.alt_text)]) Which is handled by these views: views.py class ImageDetailView(DetailView): model = Image context_object_name = 'image' template_name = 'image_detail.html' class ImageListView(ListView): model = Image context_object_name = 'images' template_name = 'image_list.html' Now when these are passed to their relevant templates, the DetailView works as it should - passes the url to the template using this code, and the image renders in the browser. image_detail.html ... <img src="{{ image.image.url }}" alt="{{ image.alt_text }}"> ... But the ListView does not pass the url or alt-text into the template. Here's the code I use to call it in the template: image_list.html {% for image in images %} <img src="{{ images.image.url }}" alt="{{ images.alt_text }}"> {% endfor %} Weirdly, it is getting a response from the database, as the loop creates 5 …