Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django: how to use "or" in django filter method?
i want to filter a model by a tuple, i dont know if that is the right sentence to use but i have a model that looks like this USER_COURSE_RATING = ( ("1.0", "1.0 - Poor"), ("2.0", "2.0 - Fair"), ("3.0", "3.0 - Good"), ("4.0", "4.0 - Amazing"), ("5.0", "5.0 - Excellent"), ) class Course(models.Model): course_title = models.CharField(max_length=10000) class CourseRating(models.Model): course = models.ForeignKey(Course, on_delete=models.CASCADE) rating = models.CharField(max_length=1000, choices=USER_COURSE_RATING, null=True, blank=True) and what i want to do in the views if to filter the CourseRating by the tuple i defined above called USER_COURSE_RATING i have written the view but it seems not to be working, NOTE: i am not getting any error message but it not working def course_detail(request, course_slug): rating_count = CourseRating.objects.filter(course=course, rating="3.0" or "4.0" or "5.0").count() So i want to only display the count if the rating was either 3.0, 4.0 or 5.0 that is what i am expecting -
How to save multiindex dataframe into Django JSONField?
I have a dataframe structure like this I would like to insert into a dictionary new_dic and then save in a Django JSONField. How can I do that ? dic = df.to_dict(orient='index') dic {'ABC': {('free', 'quantity'): 256.6964787, ('free', 'value'): 256.6964787, ('total', 'quantity'): 256.6964787, ('total', 'value'): 256.6964787, ('used', 'quantity'): nan, ('used', 'value'): nan}, 'DEF': {('free', 'quantity'): 0.029599199999999992, ('free', 'value'): 88.45099336799997, ('total', 'quantity'): 0.06789919999999999, ('total', 'value'): 202.90250036799998, ('used', 'quantity'): 0.0, ('used', 'value'): 0.0}} I'm able to assign the dictionary to a key 2022-04-22 and save the new dictionary in my Django model. Here, data is a field JSONField. new_dic = dict() new_dic['2022-04-22T15:00:00Z'] = dic w = MyModel.objects.get(name=name) w.data = new_dic w.save() w.data {'2022-04-22T15:00:00Z': '{"ABC":{"(\'free\', \'quantity\')":256.6964787,"(\'free\', \'value\')":256.6964787,"(\'total\', \'quantity\')":256.6964787,"(\'total\', \'value\')":256.6964787,"(\'used\', \'quantity\')":null,"(\'used\', \'value\')":null},"DEF":{"(\'free\', \'quantity\')":0.0295992,"(\'free\', \'value\')":88.450993368,"(\'total\', \'quantity\')":0.0678992,"(\'total\', \'value\')":202.902500368,"(\'used\', \'quantity\')":0.0,"(\'used\', \'value\')":0.0}}'} Everything looks fine, but there is a problem when the data is loaded with json.loads(). How can I do that ? json.loads(w.data) TypeError: the JSON object must be str, bytes or bytearray, not dict -
django bootstrap modal upade with another modal
I have modal with with table and trying to make this table editable - only add new content needed. Here is the first modal: first modal Once I click plus sign (+) it will open new modal with fields: second modal What I need is once fileds in 2nd modal are fulfilled and click "Submit" it should add it to table in first modal. Do you guys have and idea how to do it? -
How to create APIs using Python Django to fetch unread emails and send emails using gmail account(create one using your phone number)
Create APIs using Python Django to fetch unread emails and send emails using gmail account(create one using your phone number) The API should use Googles API i.e. (https://developers.google.com/gmail/api/guides/sending) NOTE: after fetching the emails make it read so in the next iteration the api doesnt pick it up again Deliverables: An API endpoint to send an email with some paramaters An API endpoint to fetch all unread emails -
Android Studio - How to select a file (PDF) and send it via HTTP request? + how to download it from Django backend
In my Java Android Studio app I want to let the user choose a PDF file that will be sent via an HTTP POST request to my local backend made in Django which saves the PDf file received to an postgreSQL database as a bytea data type. My backend should be ready to handle these requests, so I only need help with the Java Android Studio frontend. Many solutions that I found online used no longer supported functions, so I want to specify that the app is for Android 10 and higher I would also like to know how can I download these uploaded files from the database on back to my mobile device with a GET HTTP request. If you want to see some sections of my code just let me know. -
Django: How to use 1 form of 2 forms in one view?
I have app like this: enter image description here When I want to login, the data from username and password go to first form "Search friend or event" and I get a bad template. How to mark form to the suitable view? First form: def search_friend(request): if request.method == 'GET': search = request.GET.get('search') results = User.objects.filter(username=search) return render(request, 'friends/search_friend.html', {'results': results}) <div class="middlenavbar"> <form action="{% url 'search-friend' %}" method="GET"> <input id="middlesearchinput" type="search" placeholder="Search friend or event"> <button id="magniferbutton" type="submit"><i class="icon-search"></i></button> </div> Second form: login is from LoginView <div> <form action="{% url 'login' %}" method="POST" > {% csrf_token %} {{ form|crispy }} <div> <button type="submit">Login</button> </div> </form> <small > Need An Account? <a href="{% url 'register' %}">Sign Up Now</a> </small> </div> -
get last instance of model which contains request.user in manytomanyfield
I am building a BlogApp and I am trying to get the last instance of model in which request.user in ManyToManyField I have tried using models.py class Blog(models.Model): title = models.CharField(max_length=3000) likes = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='post_likes') views.py def get_data(request): get_last_blog = Blog.objects.filter(likes__in=[request.user]).last() print(get_last_blog) But it is showing first instance not last. I have tried without list like likes__in=request.user but it shows 'User' object is not iterable I have tried many times but it is still not working. I am new in django. Any help would be much Appreciated. Thank You in Advance -
Pytest a function which contains a async function call
@app.task def function_a(num): //do somethings pass def function_b(a): //do something function_a.delay(a) return a @pytest.mark.django_db def test_function_b() a = function_b() // assert condition depends on the operation on function_a The conditions we are going to check in the test function is dependent the operations we did in the function_a how can we test this using pytest? -
How in django add ssl (https)?
how change http to https? Deploying django with docker compose. (Test database, Static file, Media file) Django + psycopg2 + uWSGI http for example: https://github.com/mazyargholami/django-docker version: "3.9" services: app: build: context: . restart: always volumes: - static-data:/vol/web environment: - DB_HOST=db - DB_NAME=${DB_NAME} - DB_USER=${DB_USER} - DB_PASS=${DB_PASS} - SECRET_KEY=${SECRET_KEY} - ALLOWED_HOSTS=${ALLOWED_HOSTS} depends_on: - db db: image: postgres:13-alpine restart: always volumes: - postgres-data:/var/lib/postgresql/data environment: - POSTGRES_DB=${DB_NAME} - POSTGRES_USER=${DB_USER} - POSTGRES_PASSWORD=${DB_PASS} proxy: build: context: ./proxy restart: always depends_on: - app ports: - 80:8000 volumes: - static-data:/vol/static volumes: postgres-data: static-data: server { listen ${LISTEN_PORT}; location /static { alias /vol/static; } location / { uwsgi_pass ${APP_HOST}:${APP_PORT}; include /etc/nginx/uwsgi_params; client_max_body_size 10M; } } https? how add ssl certificate? or certbot? -
Django is not sending e-mails
guys! I have an issue with my Django project. About project: Django version: 3.0.7 Django hosting provider: Digitalocean E-mail hosting provider: Beget.com OS: Ubuntu 18.04.6 Here is my settings.py EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.beget.com' EMAIL_PORT = 465 EMAIL_HOST_USER = 'my@email.com' EMAIL_HOST_PASSWORD = 'MyVerySecretPassword' DEFAULT_FROM_EMAIL='my@email.com' Here is my views.py from django.core.mail import send_mail def register(request): if request.method == 'POST': form = UserRegistrationForm(request.POST) if form.is_valid(): user = form.save(commit=False) user.is_active = False user.save() current_site = get_current_site(request) mail_subject = 'Please, activate your account by clicking the link below.' message = render_to_string('acc_active_email.html', { 'user': user, 'domain': current_site.domain, 'uid':urlsafe_base64_encode(force_bytes(user.pk)), 'token':account_activation_token.make_token(user), }) to_email = form.cleaned_data.get('email') send_mail(mail_subject, message, settings.DEFAULT_FROM_EMAIL, [to_email]) What I have tried to solve my problem: Using gmail account (yes, with anabled 'Allow less secure apps') Sending via Django shell (nope, it returns code '1', the mailbox is as empty as my ideas:( ) I have opened 587 and 465 ports in ufw I tried to write and run simple python smtp script to send e-mail via Django shell (spoiler: it worked perfectly on my server via shell), but when I tried to implement this code into my Django code, it failed just like Django send_mail() function: here is the code: import … -
for loop to populate a django template table
I'm trying to make a table in Django template. I'm sending a dict as my data inside my views.py like this: data = { "year_most_launches": result_launches, "launch_sites":result_sites, "launches_2019_2021":result_2019_2021 } return render(request,"main/launches.html", {"data":data}) My table in HTML code: <table class="table"> <thead> <tr> <th>Year with most launches</th> <th>Launch site with most launches</th> <th>Number of launches between 2019 and 2021</th> </tr> </thead> <tbody> {% for element in data.values %} <tr> <td>{{ element }}</td> </tr> {% endfor %} </tbody> </table> My problem is that the values of data just appears in the first columm, creating 3 rows instead of just appearing in the first row. How can I solve that? It is a problem inside my html? -
How to replace port 8000
I'm working on a project now and I'm currently using Django+uWSGI+Nginx to deploy the backend on the server. There is also a frontend using Vue.js on the same server. So the frontend is www.mysite.com The backend uses port 8000 as www.mysite.com:8000 But I encountered a problem, that is, many users' work network blocked port 8000, so that users could only use the front end, but could not connect to the back end. Is there any way to avoid using www.mysite.com:8000 and replace it with another url? -
django rest framework RetrieveUpdate
I'm now making user profile update API using drf with RetreiveUpadteAPIView there is one question I cant' figure out what the solution is. With this logic, request datas are well updated on DB. Only password given is set without hashed but just normal character. even that changed normal character password is also not matched as with i set. How can i fix it.. your best regard Here is my code below. #views.py @permission_classes([IsAuthenticated]) class UpdatePartialUserView(RetrieveUpdateAPIView): queryset = User.objects.all() serializer_class = UserProfileSerializer def get_object(self): queryset = self.filter_queryset(self.get_queryset()) obj = queryset.get(pk=self.request.user.id) self.check_object_permissions(self.request, obj) return obj def retrieve(self, request, *args, **kwargs): serializer = UserSerializer(request.user) return Response(status=status.HTTP_200_OK, data = serializer.data) def update(self, request, *args, **kwargs): partial = kwargs.pop('partial', False) self.object = self.get_object() serializer = self.get_serializer(request.user, data = request.data, partial=partial) # serializer = self.get_serializer(self.object, data = request.data, partial=partial) if not serializer.is_valid(raise_exception=True): return Response(status=status.HTTP_409_CONFLICT, data = {'message':serializer.errors}) self.perform_update(serializer=serializer) self.object.set_password(request.data['password']) self.object.save() return Response(status=status.HTTP_202_ACCEPTED, data={"message": "success!"}) #serializers.py class UserProfileSerializer(serializers.ModelSerializer): password = serializers.CharField(write_only=True, required=True) password2 = serializers.CharField(write_only=True, required=True) old_password = serializers.CharField(write_only=True, required=True) profile_img = serializers.ImageField(use_url=True, required = False) def validate(self, attrs): if attrs.get('password') != attrs.get('password2'): raise serializers.ValidationError({ "password" : "비밀번호가 다릅니다."}) return attrs def validate_old_password(self, value): #check user request = self.context.get('request') if request and hasattr(request, "user"): user = request.user … -
Django renders the HTML file without including static files(CSS styles, images)
There I have tried to render the HTML file html_message = get_template('mail.html').render(context=data) email = EmailMultiAlternatives( "Subject", html_message, settings.EMAIL_HOST_USER, ['example@gmail.com', ], ) email.attach_alternative(html_message, 'text/html') email.send(fail_silently=False) The HTML file {% load static %} <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Title</title> <link rel="stylesheet" href="{% static 'mail.css' %}"> </head> <body> <header> <div> <img class="logo" src="{% static 'logo.svg' %}" alt=""> </div> </header> </body> As the Result HTML file was rendered without static files -
Questions about moving from Django ro DRF [closed]
I've completed my little project in Django for imaginary company where users have different roles from seller to top manager and bunch of tables containing users, products, orders, contractors, reports and of course I made a whole lotta class-based CRUDs and other views. The questions are: I wanna learn Django REST framework and as far as I can tell it has it's own way of doing CRUD operations as well as authorization. Do I have to replace all my CRUDs with the new ones from DRF? And what about my User model? Can I keep it and just set up a DRF authorization on top of it? What parts of standard Django project should be replaced? Thanks! -
how to return couple of variables in models.py
i need to return shop_nama nad adress to django site administration, here's the code shop_id = models.AutoField(primary_key=True, unique=True) shop_name = models.CharField(max_length=264) adress = models.TextField(max_length=264, default='') def __str__(self): return self.shop_name but it shows error when i type return self.shop_name, self.adress error says: str returned non-string (type tuple) sooo how to fix this problem? -
how to use msg91 in django?
def send_email(request): conn = http.client.HTTPSConnection("api.msg91.com") payload = "{\r\n\"to\": [\r\n{\r\n\"name\": \"Test\",\r\n\"email\": \"email\"\r\n}\r\n],\r\n\"from\": {\r\n\"name\": \"Joe\",\r\n\"email\": \"email\"\r\n},\r\n\"domain\": \"my domian name\",\r\n\"mail_type_id\": \"1\",\r\n\"template_id\": \"mytemplate-name\",\r\n\"variables\": {\r\n\"VAR1\": \"12345\",\r\n\"VAR2\": \"1234\"\r\n},\r\n\"authkey\": \"myauthkey\"\r\n}" headers = { 'Content-Type': "application/JSON", 'Accept': "application/json" } conn.request("POST","/api/v5/email/send",payload,headers) res = conn.getresponse() data = res.read() print(data.decode("utf-8")) return None -
Showing Operation object (1) when trying to get foreignkey django
I am trying to post a table in HTML and i get This "Operation object (1)" insted of just the id "1" How is posible to fix this as you can see in the picture where is selected i want to have the id not text models.py operationID = models.IntegerField(primary_key=True) assignee = models.ForeignKey('Employee', on_delete=models.CASCADE) dateRegistered = models.DateTimeField(auto_now_add=True) timeStart = models.DateTimeField(auto_now_add=True, null=True) timeFinish = models.DateTimeField(null=True) status = models.ForeignKey( 'Status', on_delete=models.CASCADE) class Subtask(models.Model): subtaskID = models.IntegerField(primary_key=True, auto_created=True) operationID = models.ForeignKey('Operation', on_delete=models.CASCADE) containerID = models.CharField(max_length=255) containerWeightT = models.DecimalField(max_digits=6, decimal_places=2) loadSeq = models.IntegerField() moveTo = models.ForeignKey('MoveTo', on_delete=models.CASCADE) stow = models.ForeignKey('Stow', on_delete=models.CASCADE) status = models.ForeignKey( 'Status', on_delete=models.CASCADE)``` views.py ```def displaydata(request): results1 = Subtask.objects.prefetch_related( 'moveTo', 'operationID', 'stow', 'status').all() return render(request, 'ee.html', {'Subtask': results1})``` [website][1] [1]: https://i.stack.imgur.com/cWFdd.png -
remove div only on one page in Django template
I have a website that contains 15 seperate pages. On each page I have a div named header. Right know I am removing this element via JavaScript like this: homepage.html <script> const element = document.getElementById('header'); element.remove(); </script> The problem is that I can see the header element for a second before it is removed. The script is placed on the top of the page. I also tried to do it via css like this: .header { height: 0rem !important; visibility: hidden !important; } However, I still see the element disappearing when refreshing the page. I know that I could create a template block in my base.html file and just exclude it in the homepage.html page but I'd need to include it in the other 14 HTML files manually. Question Is there any other/better way to exclude div so I don't see it at all on my homepage? -
Django, django-filter and pagination
my goal is to have a 'user_profile' page that displays relevant information of the user of interest. Furthermore, the 'user_profile' page should include all the posts that were created by the respective user as new blog entries. These posts, however, should be filterable with the application 'django-filter' and be paginated. At the moment I have difficulties to paginate the filtered posts. So my question is how to achieve the latter? So far, I used following approach: filters.py import django_filters class AccountPostFilter(django_filters.FilterSet): title = django_filters.CharFilter(lookup_expr='icontains') category = django_filters.ChoiceFilter(choices=cat_list) class Meta: model = Post fields = ['title', 'category'] views.py class UserProfile(DetailView, MultipleObjectMixin): model = Account template_name = 'account/user_profile.html' paginate_by = 5 def get_context_data(self, **kwargs): posts = Post.objects.all().filter(author=self.kwargs['pk']) context = super().get_context_data(object_list=posts, **kwargs) context['filterset'] = AccountPostFilter(self.request.GET, queryset=posts) return context Thank you very much for your time. Best wishes, Daniel -
Django ElasticBeanstalk Deploy- error deterministic=True requires SQLite 3.8.3 or higher
so, i deployed my application in my local venv i did python make migrations python migrate and i did eb deploy and eb status the helth returned green so its working, but when i enter the web site it returns deterministic=True requires SQLite 3.8.3 or higher Note: Locally it works just fine commands that i ran to make my project: python manage.py mamemigrations python manage.py migrate python manage.py createsuperuser eb init python-3.8 Naameofmyproject eb create Nameofmyproject Requirments.txt: asgiref==3.5.0 autopep8==1.6.0 certifi==2021.10.8 charset-normalizer==2.0.12 dj-database-url==0.5.0 Django==4.0.3 django-anymail==8.5 django-autoslug==1.9.8 django-crispy-forms==1.14.0 django-environ==0.8.1 django-model-utils==4.2.0 idna==3.3 Pillow==9.1.0 psycopg2-binary==2.9.3 pycodestyle==2.8.0 python-dateutil==1.5 requests==2.27.1 six==1.16.0 sqlparse==0.4.2 stripe==2.70.0 toml==0.10.2 tzdata==2022.1 urllib3==1.26.9 settings.py: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', } } STATIC_URL = '/static/' STATIC_ROOT = BASE_DIR / 'static' STATICFILES_DIRS = [BASE_DIR / 'templates/static'] MEDIA_URL = '/media/' MEDIA_ROOT = BASE_DIR / 'media' CART_SESSION_ID = 'cart' AUTH_USER_MODEL = 'account.UserBase' LOGIN_REDIRECT_URL = '/account/dashboard' LOGIN_URL = '/account/login/' EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' -
numpy heroku error: legacy-install-failure
I'm trying to deploy django webapp on heroku but getting error: legacy-install-failure on numpy package. Building on Heroku-20 stack, default python-3.10.4, pip 22.0.4. note: This is an issue with the package mentioned above, not pip -
OSX monterey -> ld: library not found for -lintl
When pipenv install uwsgi This error comes, ld: library not found for -lintl I guess it requires X-code library ? I tried this as well $xcode-select --install xcode-select: error: command line tools are already installed, use "Software Update" to install updates However it is already installed. How can I solve this? -
I tried to add sub frontend project in my templates but I got error "MIME checking is enabled."?
goal I have two frontend project and I want to do create a new folder called build_2 inside my templates folder. inside the build_2 have index.html file and it was working just fine problem but where I added <link href="my_styles.css" rel="stylesheet"> I got this error Note: the directory myProject/home/templates/static/css/my_styles.css full error message: Refused to apply style from 'http://127.0.0.1:8000/css/my_styles.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled. I tried add #settings.py TEMPLATES['DIRS'].append(os.path.join(BASE_DIR, 'home/templates/build2'), os.path.join(BASE_DIR, 'home/templates')) add STATICFILES_DIRS.append(os.path.join(BASE_DIR, 'home/templates/static')) but I am still getting the same error? -
download and add files in vuejs and django
how can i add a file in my front end vuejs and download my file from my backend django rest framework with v-model in vuejs my modele is article , class Article(models.Model): conference = models.ForeignKey(Conference,related_name='articles',on_delete=models.CASCADE) title =models.CharField(max_length=50) Auteur =models.CharField(max_length=50) resume =models.TextField() motcles =models.TextField() create_by = models.ForeignKey(User, related_name='articles',on_delete=models.CASCADE) fichier = models.FileField(upload_to='uploads',blank=True, null=True) def __str__(self): return self.title this code is about how i add a new article , i should here add how to enter a file <form v-on:submit.prevent="submitArticle()"> <div class="field"> <label class="label">Title</label> <div class="control"> <input type="text" class="input" v-model="article.title"> </div> </div> <div class="field"> <label>Auteur</label> <div class="control"> <input type="title" class="input" v-model="article.Auteur"> </div> </div> <div class="field"> <label class="label">Resume</label> <div class="control"> <textarea type="text" class="input" v-model="article.resume"></textarea> </div> </div> <div class="field"> <label>motcles</label> <div class="control"> <input type="title" class="input" v-model="article.motcles"> </div> </div> <div id="app"> <a href="#" @click.prevent=" downloadItem({ url: 'https://test.cors.workers.dev/?https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf', label: 'example.pdf', }) " > download </a> </div> <div class="field"> <div class="control"> <button class="button is-link">submit</button> </div> </div> </form> this is how i enter my article submitArticle() { console.log('submitArticle') const conferenceID = this.$route.params.id this.errors = [] if (this.article.title === '') { this.errors.push('The title must be filled out') } if (this.article.resume === '') { this.errors.push('The content must be filled out') } if (!this.errors.length) { axios .post(`/api/v1/add-article/${conferenceID}/`, this.article) .then(response => { this.article.title …