Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django folder structure for created file, static? media? or another one?
I want to create the file(.wav) by django and let it be downloaded by user. Currently I create the file under /myproj/static directory. However it is mixed with the other jpg/img files, so,, it's not good design? then, I read the document about /myproj/media directory but it is said used for user upload files. So,,, how is the good directory design for server created file? Should I create such as /myproj/create_wav? but how can user access this url in template? Thank you for any idea or helps. -
Not getting the profile image from html form but other datas are getting
this is the profile model class Profile(models.Model): user=models.ForeignKey(User,on_delete=models.CASCADE) id_user=models.IntegerField() bio=models.TextField(blank=True) profileimg=models.ImageField(upload_to='profile_images',default='defaultdp.png') location=models.CharField(max_length=100,blank=True) def __str__(self): return self.user.username this is the html form <form action="" method="POST" enctype="multipart/form-data"> {%csrf_token%} <div class="col-span-2"> <label for=""> Profile Picture</label> <img height="100" width="100" src="{{user_profile.profileimg.url}}"> <input type="file" name="profileimg" placeholder="" class="shadow-none bg-gray-100"> </div> <form> this is views.py @login_required(login_url='signin') def settings(request): user_profile=Profile.objects.get(user=request.user) if request.method == 'POST': if request.FILES.get('image')==None: image=user_profile.profileimg bio=request.POST ['bio'] location=request.POST['location'] user_profile.profileimg=image user_profile.bio=bio user_profile.location=location user_profile.save() if request.FILES.get('image')!=None: image=request.FILES.get('image') bio=request.POST ['bio'] location=request.POST['location'] user_profile.profileimg=image user_profile.bio=bio user_profile.location=location user_profile.save() return redirect('settings') return render(request,'setting.html',{'user_profile': user_profile}) the profile image which I am getting is the defaultdp.png which is the default pic if no file is getting uploaded. I think the file i am uploading is not getting saved on the database or I dont know what is happening here. could anyone please help me to sort it out..? If I am missing any kind of code snippet here for debugging kindly mention it.I will edit the question with the mentioned code. -
Django - No module named 'mywebsite'
I have a django app that I downloaded from a Github repo where the main app is not called "mywebsite" (like instructed in the django tutorial). Everytime I run python manage.py runserver i get the following error. Conceptually I understand the error, but practically I don't. The issue can't be that I have always need to name my repo "mywebsite" right? This is the current repo structure. Traceback (most recent call last): File "/Users/nicolamacchitella/Documents/GitHub/familytree/.env/lib/python3.9/site-packages/django/core/management/base.py", line 402, in run_from_argv self.execute(*args, **cmd_options) File "/Users/nicolamacchitella/Documents/GitHub/familytree/.env/lib/python3.9/site-packages/django/core/management/commands/runserver.py", line 74, in execute super().execute(*args, **options) File "/Users/nicolamacchitella/Documents/GitHub/familytree/.env/lib/python3.9/site-packages/django/core/management/base.py", line 448, in execute output = self.handle(*args, **options) File "/Users/nicolamacchitella/Documents/GitHub/familytree/.env/lib/python3.9/site-packages/django/core/management/commands/runserver.py", line 81, in handle if not settings.DEBUG and not settings.ALLOWED_HOSTS: File "/Users/nicolamacchitella/Documents/GitHub/familytree/.env/lib/python3.9/site-packages/django/conf/__init__.py", line 92, in __getattr__ self._setup(name) File "/Users/nicolamacchitella/Documents/GitHub/familytree/.env/lib/python3.9/site-packages/django/conf/__init__.py", line 79, in _setup self._wrapped = Settings(settings_module) File "/Users/nicolamacchitella/Documents/GitHub/familytree/.env/lib/python3.9/site-packages/django/conf/__init__.py", line 190, in __init__ mod = importlib.import_module(self.SETTINGS_MODULE) File "/opt/homebrew/Cellar/python@3.9/3.9.7_1/Frameworks/Python.framework/Versions/3.9/lib/python3.9/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 972, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked ModuleNotFoundError: No module named 'mywebsite' During … -
Should i allow user to use the admin panel to upload his blog?
I'm building an app for someone, one of its function is it allowers the owner to upload blogs to the website. So i'm wondering if i should create a page for uploading blog or just give him staff permission so he can create and upload it through django's admin panel. I want to know if this is safe or if it will be worth it to create a front-end template for just one person to use. -
WooCommerce webhooks with Django Rest Framework
I am trying to integrate WooCommerce webhooks with Django but without success. I found a solution to a similar issue, but still cant make it work. The thing is that, Woocomerce is generating this secret key automatically. I guess that I have to hard code it by myself in the admin panel ? Also about the code bellow(solution found in the web), Django is complaining that request has no property payload. I guess that it must be data ? mport base64 import hashlib import hmac request_sig = request.headers.get("x-wc-webhook-signature") signature = hmac.new(<your_secret_key>.encode(), request.payload, hashlib.sha256).digest() if hmac.compare_digest( request_sig.encode(), base64.b64encode(signature) ): return True return False enter code here -
django taggit self.tags.add() in not working in django
I am using djagno-taggit. I want to add other fields data automatically when I save the data table. models.py class resource(models.Model): title=models.CharField(max_length=100) size=models.CharField( max_length=20, default="") desc=models.TextField(default="") file=models.FileField(default="", blank=True) url= models.URLField(max_length=200, blank=True) varient=models.CharField(max_length=100, default="") Brand = models.ForeignKey(brand,on_delete=models.CASCADE, default="") Model = models.ForeignKey(model,on_delete=models.CASCADE, default="") Categories = models.ForeignKey(category,on_delete=models.CASCADE, default="") update_at=models.DateField(auto_now=True) slug=models.SlugField(default="", unique=True, blank=True) tags_char=models.TextField( blank=True) Tags = TaggableManager(blank=True) def save(self, *args, **kwargs): getlast=resource.objects.all().last() getid=getlast.id print(getid) newid=int(getid)+1 if not self.pk: self.pk=newid self.tags_char= self.desc+","+self.size ans=[self.title ,self.desc,self.size] self.Tags.add(*ans) print(self.Tags.all()) for tag in self.tags_char.split(','): print(tag) super(resource, self).save(*args, **kwargs) Here first I get pk for current data and try to save list that has the same data fields in the Tags fields. It works well when I Print Tagsafter adding and get the below result in my terminal when I print(self.Tags.all()) result in the terminal is: <QuerySet [<Tag: tagSize>, <Tag: tagTitle>, <Tag: tagDescription>]> But when I open it in the admin models data table then I got Tags fields empty!! Any solution?? -
4 products on the same line in the template
I'm developing an e-commerce with Django. My backend is fine, my problem is with the template. Currently, I want to display 4 products per row, and if there are 7 products, the other 3 must be aligned with the top one. I'm using bootstrap to do this, however, for some reason I don't know, it doesn't have 4 products on the same line, even with space. I'm using a container with 1200px. home.html <div class="container"> <div class="row"> <div class="col-lg-8"> <div class="row"> {% for product in products %} <div class="card mb-4 border rounded" style="width: 13.5rem;"> <a href="{{ product.get_absolute_url }}"> {%if product.image %} <img class="img-produto" src='/media/{{product.image}}' class="card-img-top hover_img "> {% else%} <img class="img-produto" src="{% static '/img/not-found-product.jpg' %}" class="card-img-top hover_img"> {%endif%} </a> <div class="card-body"> <p class="card-title">{{product.name}}</p> <p class="card-text"><i class='fas fa-dollar-sign' style="margin-right:2px"></i>{{product.price}}</p> </div> </div> {% endfor %} </div> </div> </div> </div> base.css @media (min-width: 900px){ .container{ max-width: 1100px; } } -
i could not run my django project which has been cloned from git why
Exception in thread django-main-thread: django.core.exceptions.ImproperlyConfigured: WSGI application `enter code here`'vivawalleetintegration.wsgi' could not be loaded; Error importing module# -
Django model auto update status when the medicine is expired
How to Auto update the status when the medicine is expired? for example, I created medicine record and set the expirationdate to july 2022, if the current date is greater than the expirationdate it will update the status of medicine to "Expired", How do I do that? class Medicine(models.Model): medstatus = [ ("Expired", "Expired"), ("Active", "Active") ] description = models.CharField(max_length=50, null=True) expirationDate = models.DateField(null=True) status = models.CharField(max_length=50, choices=medstatus, null=True) -
I change the error message, but it doesn't change
I change the error message in the model, but it doesn't change. I can't understand why this approach doesn't work, because it works for other fields it's my model class CustomUser(AbstractUser): username = models.CharField( max_length=15, unique=True, validators=[UnicodeUsernameValidator()], error_messages={ "unique": "Test login", }) group = models.OneToOneField('Group', unique=True, on_delete=models.CASCADE, error_messages={ "unique": "Test group" }) email = models.EmailField(models.EmailField.description, unique=True, validators=[email_validator], error_messages={ "unique": "Test email", }) def __str__(self): return self.username and it's my Group Model class Group(models.Model): name = models.CharField(max_length=20, unique=True) faculty = models.ForeignKey(Faculty, on_delete=models.CASCADE) def __str__(self): return self.name When testing in postman, I get this: { "username": [ "Test login" ], "group": [ "This field must be unique." ], "email": [ "Test email" ] } Thank you in advance -
Create User in django using Rest Framework
i've seen people using different ways to create user in django Rest framework. i tried & none of them is working for me. sometimes it says Key error: Groups or something else. so i tried this without having a is_valid & it works like a charm. is this a safe way to use to create user or if not why & how should i create User in views? #my views.py @api_view(['GET','POST']) def getUserData(request): if request.method == 'POST': user = User.objects.create_user( username=request.data['username'], password=request.data['password']) serializer = userSerializer(user) return Response(serializer.data) -
Access value of Django widget attribute
I have Django Form Field: dob = forms.DateField( required=True, widget=NumberInput( attrs={ "type": "text", "class": "datepicker", "autocomplete": "off", "placeholder": "DD/MM/YYYY", } ), ) Now I need to access the "placeholder" value. I use datepicker to change the format: $('.datepicker').datepicker({ format: 'mm-dd-yyyy',# **here I need to replace it with Django widget attribute.** }); How can I get the value of the placeholder so I can do something like that: $('.datepicker').datepicker({ format: {{django.placeholder | safe}}, }); -
django import tags error Line number: 1 - resource objects need to have a primary key value before you can access their tags
I am using django taggit in my models and trying to import data. But getting errors. Given below. Line number: 1 - resource objects need to have a primary key value before you can access their tags. models.py: class resource(models.Model): title=models.CharField(max_length=100) size=models.CharField( max_length=20, default="") desc=models.TextField(default="") file=models.FileField(default="", blank=True) url= models.URLField(max_length=200, blank=True) varient=models.CharField(max_length=100, default="") Brand = models.ForeignKey(brand,on_delete=models.CASCADE, default="") Model = models.ForeignKey(model,on_delete=models.CASCADE, default="") Categories = models.ForeignKey(category,on_delete=models.CASCADE, default="") update_at=models.DateField(auto_now=True) slug=models.SlugField(default="", unique=True, blank=True) Tags = TaggableManager(blank=True) -
Django trigger add on models
In adminsite, I want if the user create an account on Student table, it will also add to the dashboard table, how can i do that? class Dashboard(models.Model): fullname = models.CharField(max_length=50,blank=True, null=True) status = models.CharField(max_length=50,blank=True, null=True) dateCreated = models.DateTimeField(default=datetime.now()) class Student(models.Model): Gender = [ ('Male', 'Male'), ('Female', 'Female') ] fullname = models.CharField(max_length=50, null=True) status = models.CharField(max_length=500, null=True, default='Student') contact_number = models.IntegerField(max_length=50, null=True) age = models.IntegerField( null=True) gender = models.CharField(max_length=50, choices=Gender, null=True) birthdate = models.DateField(max_length=50, null=True) class Meta: verbose_name_plural = "LIST OF STUDENTS" -
How do I load local directory into path in urls.py
I saved my homepage.html file in my laptop see this image D:\Python\WebDjango\BaseCoffeehouse\coffeehouse\templates. Then in urls.py (open in VSCode), I added the path as below : path('D:/Python/WebDjango/BaseCoffeehouse/coffeehouse/templates', TemplateView.as_view(template_name='homepage.html'), name='homepage'), When I run the server (python manage.py runserver), I got an error message "Page not foung 404" in the default port 8000. So, how should I do it to open my homepage.html file? -
Why my images are missing when deploying django and postgresql on heroku?
I create a webapp with Django for the backend and React for the frontend. I deploy the app on heroku and I use the heroku-postgres as the database, after deployin the app everything works perfectly (superuser, models.py etc...). Now I connect to the superuser account and try to add data, all data is displayed on the application frontend except the images. Note that I have a static folder and also I have run python manage.py collectstatic before deploying the app on Heroku. What can I do to make the images displayed every time I add them? -
Django Mailgun API returning 401 forbidden
I've installed Django any mail and am I trying to use mail gun with it for password resets. I've added any mail to my installed apps and tried to use mail gun as an API or smtp service. Both return back 401 forbidden For using mail guns API here's my code: EMAIL_BACKEND = "anymail.backends.mailgun.EmailBackend" ANYMAIL_MAILGUN_API_KEY = config("MAIL_GUN_DOMAIN_API") For MAIL_GUN_DOMAIN_API I tried using my accounts private key and I tried creating a domain and using the domains sending key. Both returned the same response. for smtp : EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'smtp.mailgun.org' EMAIL_PORT = 465 EMAIL_HOST_USER = config('MAIL_GUN_USERNAME') EMAIL_HOST_PASSWORD = config('MAIL_GUN_SMTP_PASSWORD') EMAIL_USE_TLS = True for MAIL_GUN_USERNAME I used my domains login for MAIL_GUN_SMTP_PASSWORD I used my domains password I tried all of mailguns different ports and switching between tls and ssl none of this worked. Any ideas what I'm doing wrong? -
Django elastic beantstalk createsuperuser issues
I have a django project which I have managed to deploy to elastic beanstalk server but have spent the last two days trying to create super user but to no avail. I have followed different guides and answers from this site but for the life of me I just cannot get this working. I have no problems doing this locally and the other container commands i.e migrations work fine when deploying via .ebextensions/django.config, but when I added the create_superuser container commands it fails. Please see the following tree structure of my project along with the relevent files used to run this step: wfi_workflow.ebextensions\django.config option_settings: aws:elasticbeanstalk:container:python: WSGIPath: wfi_workflow.wsgi:application aws:elasticbeanstalk:application:environment: DJANGO_SETTINGS_MODULE: "wfi_workflow.settings.prod" aws:elasticbeanstalk:environment:proxy:staticfiles: "/static": "static/" packages: yum: python3-devel: [] mariadb-devel: [] container_commands: 01_collectstatic: command: "source /var/app/venv/*/bin/activate && python3 manage.py collectstatic --noinput" 02_migrate: command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate --noinput" leader_only: true 03_create_superuser: command: "source /var/app/venv/*/bin/activate && python3 manage.py mysuperuser" leader_only: true wfi_workflow\apps\account\management\commands\mysuperuser.py import os from django.core.management.base import BaseCommand from apps.account.models import User class Command(BaseCommand): def handle(self, *args, **options): if not User.objects.filter(username='test').exists(): User.objects.create_superuser('test', 'test@tesst.com', 'test1234') I'd be grateful if someone could help me resolve this issue going forward or if i'm missing anything. Thanks -
django-tenants global device table mapping to tenants
We are using django-tenants to provide a multi tenant solution for an iot platform and I'm having an issue figuring out how to map some global data to tenant specific tables. Basically we have iot devices that talk to a node.js server using a proprietary protocol over tcp, that server then makes rest api requests to a Django webserver to update the database with device measurements. The node server does not know anything about which device belongs to which customer so it needs to have a rest api that is global and then the webserver backend will need to map that device to a specific tenant but we cannot let tenants view each other's data so I'm not sure how we accomplish this as it seems apis are either tenant specific or global (public). -
SSL error: decryption failed or bad record mac when using rq worker in postgres docker image
I'm trying to run some tests in a docker image with manually installed postgres and some other software. I put everything inside one image because I'm trying to run my tests in Teamcity and Teamcity only accepts one image. Following is postgres related part in my Dockerfile: # install postgresql RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - && \ apt-get update && \ apt-get install -y postgresql-12 postgresql-contrib-12 # set up postgresql USER postgres RUN /etc/init.d/postgresql start && \ psql --command "CREATE USER test_user WITH PASSWORD 'test';" && \ psql --command "CREATE DATABASE test_db WITH OWNER = test_user;" && \ psql --command "ALTER USER test_user CREATEDB;" When I try to run tests inside the container, I get following error(I removed some private info): 2022-08-19 20:54:16,318 INFO worker(551): Worker rq:worker:94ec9b41d06942ae8d44a422681bf47f: started, version 1.8.1 2022-08-19 20:54:16,318 INFO worker(521): Subscribing to channel rq:pubsub:94ec9b41d06942ae8d44a422681bf47f 2022-08-19 20:54:16,320 INFO worker(555): *** Listening on default... 2022-08-19 20:54:16,321 INFO worker(1098): Cleaning registries for queue: default 022-08-19 20:54:16,607 INFO worker(1035): default: Job OK (f697a59f-af0f-45aa-84b4-44eede247c51) 2022-08-19 20:54:16,607 INFO worker(1045): Result is kept for 500 seconds 2022-08-19 20:54:16,619 INFO worker(590): Worker rq:worker:94ec9b41d06942ae8d44a422681bf47f: done, quitting 2022-08-19 20:54:16,620 INFO worker(529): … -
django rest framework Viewset for single item, not list
I am having a problem with my DRF API. I want to provide a read only endpoint that takes a single id from a object(document) in the DB and runs a script to perform an check and gives back the result. It works fine when I call the API with //api/documentcheck/1/ where 1 is the pk of the document in the DB. The problem is that if I just call the base URL //api/documentcheck/ it tries to give back the results of all documents in the database and times out because it takes ages. I am looking for a way to remove the list view and force users to provide the ID for a single document to check. This is my serializer class class DocumentCheckSerializer(serializers.Serializer): '''Serializer for document check''' class Meta: model = Document fields = '__all__' def to_representation(self, value): return process_document(value) This is my view: class DocumentCheck(viewsets.ReadOnlyModelViewSet): """Check a single document""" authentication_classes = ( TokenAuthentication, SessionAuthentication, BasicAuthentication, ) permission_classes = [IsAuthenticated] queryset = Document.objects.all() serializer_class = serializers.DocumentCheckSerializer and my router entry router.register("documentcheck", views.DocumentCheck, basename="documentcheck") -
I'm tyring to make an API following instructions on CodewithMosh
I'm learning python on a website called codewithmosh. I'm at the point where I'm doing a project with Django but every time I try to run my server (“python3 manage.py runserver”) to launch the site with a new API I made, It gives me this error message: "ImportError: cannot import name ‘_sanitize_token’ from ‘django.middleware.csrf’ (/Users/alecsmith/.local/share/virtualenvs/vidly-mJrVeZC4/lib/python3.10/site-packages/django/middleware/csrf.py)" I guess you would have to see my whole folder to understand what the issue could be, but if someone could give me some basic advance that would be appreciated. I re-followed the instruction 3 times and I still get that message. -
which pip package creates psycopg2 dependency?
This is what i mean, i am trying to install all the packages in my requirements.txt (django/python), i did not specify some packages like asgiref, psycopg2, urllib etc, but it just starts downloading or installing them too, then i thought: there must be some packages that are also downloading these other asgiref, psycopg2, urllib etc as dependencies. Does anyone know what package that might be from this lists? requirements.txt boto3==1.20.26 botocore==1.23.54 dj-database-url==0.5.0 Django==3.2.7 django-auto-logout==0.5.0 django-ckeditor==6.0.0 django-crispy-forms==1.12.0 django-dotenv==1.4.2 django-environ==0.9.0 django-heroku==0.3.1 django-jazzmin==2.4.8 django-plaintext-password==0.1.0 django-static-fontawesome==5.14.0.0 gunicorn==20.0.4 Pillow==9.1.0 psycopg2-binary requests==2.27.1 requests-oauthlib==1.3.1 -
Make Django admin object page show less?
I am currently trying to have the item page in the django admin (ie, /admin/dictionary/word/153/change) show less, I am just unsure how to do this. Given any random word can have say 10000 upvotes, it takes a while to actually make it to the page when it loads. So don't want it to show the votes? This is my admin.py and my models. from django.contrib import admin from diccionario.models import Palabra, Tag from django.utils.safestring import mark_safe class TagInline(admin.TabularInline): model = Tag def has_change_permission(self, request, obj=None): return False def has_add_permission(self, request, obj=None): return False class PalabraAdmin(admin.ModelAdmin): list_display = ( 'nombre', 'get_post_action', 'definicion', 'ejemplo', 'gramatica', 'get_sinonimos', 'get_antonimos', 'pais', 'creado', 'get_user_username', 'aprobada', 'anonimo' ) list_filter = ( 'creado', ) inlines = [TagInline] def get_sinonimos(self, obj): return ', '.join([item.nombre for item in obj.tag_set.filter(tag_type='Sinónimo')]) def get_antonimos(self, obj): return ', '.join([item.nombre for item in obj.tag_set.filter(tag_type='Antónimo')]) def get_user_username(self, obj): if obj.user: return obj.user.username if obj.user.username else obj.user.email def get_post_action(self, obj): return mark_safe('<a class="btn btn-primary" href="/api/admin/aprobar/%s">Aprove</a>' '<div style="margin: 5px 0"></div>' '<a class="btn btn-danger" href="/api/admin/borrar/%s">Borrar</a>' '<div style="margin: 5px 0"></div>' % ( obj.id, obj.id, )) get_sinonimos.short_description = 'Sinónimos' get_antonimos.short_description = 'Antónimos' get_user_username.short_description = 'username' get_post_action.short_description = 'action' admin.site.register(Palabra, PalabraAdmin) And here is the models.py import re from django.db import models … -
How to know when an item in cache expires in django
I'm currently building an order and checkout system for an application in django. I need to know when an order expires in a cache to trigger a code that returns items back to the inventory,up till now i haven't made progress in knowing how to do this in django. I just need a way to trigger a code after item expires in cache similar to signals for db save and delete.