Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
getting <django.db.models.query_utils.DeferredAttribute object at 0x000001E07253C400> while trying to add new document
this is the model document class Document(AbstractItem, HitCountMixin): """Book document type to store book type item Child class of AbstractItem """ ITEM_INTERACTIVE_TYPE = ( ("yes", _("Yes")), # ("no", _("No")), ("NA", _("Not applicable")), ) DOCUMENT_TYPE = ( ("book", _("Book")), ("working paper", _("Working paper")), ("thesis", _("Thesis")), ("journal paper", _("Journal paper")), ("technical report", _("Technical report")), ("article", _("Article")), ("exam sets", _("Exam sets")) ) DOCUMENT_FILE_TYPE = ( ("ppt", _("PPT")), ("doc", _("Doc")), ("docx", _("Docx")), ("pdf", _("PDF")), ("xlsx", _("Excel")), ("epub", _("Epub")), ("rtf", _("Rtf")), ("mobi", _("Mobi")), ) collections = models.ManyToManyField( Collection, verbose_name=_("Add to these collections"), ) document_type = models.CharField( _("Document type"), max_length=40, # TODO: Change to match the exact value. choices=DOCUMENT_TYPE, ) document_file_type = models.CharField( _("Document file format"), choices=DOCUMENT_FILE_TYPE, max_length=23, default="pdf" ) document_series = models.ForeignKey( "DocumentSeries", verbose_name=_("Series"), #on_delete=models.CASCADE, on_delete=models.SET_NULL, blank=True, null=True ) education_levels = models.ManyToManyField( EducationLevel, verbose_name=_("Education Levels"), blank=True ) grades_subjects_chapters = models.ManyToManyField( GradeSubjectChapter, verbose_name=_("Grade>Subject>Chapter"), blank=True ) languages = models.ManyToManyField( Language, verbose_name=_("Language(s)"), # null=True, blank=True ) document_interactivity = models.CharField( verbose_name=_("Interactive"), max_length=15, choices=ITEM_INTERACTIVE_TYPE, blank=True, default="NA" ) # This field should be same on all other model to make searching easy in search engine. type = models.CharField( max_length=255, editable=False, default="document" ) document_total_page = models.CharField( verbose_name=_("Total Pages"), blank=True, validators=[validate_number], max_length=7 ) document_authors = models.ManyToManyField( Biography, verbose_name=_("Author(s)"), related_name="authors", blank=True, ) document_editors = … -
What is the correct way to store images in Django backend?
Hello I am new to Django, mostly experienced in Node and mongoDb, I have figured out how to store save media such as images on the Django backend. And can retrieve the image on the client/frontend side. Yet all uploaded media to the site is saved in a media/files directory in the backend in their png/jpg formats. I am a bit confused if this is how it should be saved? I thought it would be converted into bytes and saved in the sql database. Just a bit confused as in mongodb there are npm packages that convert the media into bytes and save it the database ie: images are not kept in png/jpeg format. -
Django get_absolute_url is redirecting to random blog posts
I've created a website with a blog, and I'm trying to redirect the user to the previous blog post after sending a comment. However, it redirects to random blog posts rather than the previous one. Models.py: class Comment(models.Model): post = models.ForeignKey(Post, related_name="comments", on_delete=models.CASCADE) name = models.CharField(max_length=255) comment = models.TextField() date_posted = models.DateTimeField(default=timezone.now) def __str__(self): return self.post.title and self.name def get_absolute_url(self): return reverse('post-detail', kwargs={'pk':self.pk}) Views.py: class CommentView(LoginRequiredMixin, CreateView): model = Comment template_name = 'comment.html' fields = '__all__' def form_valid(self, form): form.instance.post_id = self.kwargs['pk'] return super().form_valid(form) urls.py: path('post/<int:pk>/', PostDetailView.as_view(), name='post-detail'), -
How to send docx file in bytes to frontend in Django?
I read the file in Django side as a python file: with open("file.docx", mode="rb") as f: bytes = f.read() and I send it: from django.http import FileResponse return FileResponse(bytes) In javascript I use this function: function downloadBuffer(arrayBuffer, fileName) { const a = document.createElement('a') a.href = URL.createObjectURL(new Blob( [ arrayBuffer ], { type: 'aapplication/vnd.openxmlformats-officedocument.wordprocessingml.document' } )) a.download = fileName a.click() } However the file is corrupted. How can I get the file correctly? -
Django forms.form returning empty choice list
I have my choices added through the init method for a given forms.form as shown below: def __init__(self, user, instance=None, *args, **kwargs): super(ProductColorVariationsForm, self).__init__(*args, **kwargs) self.fields["photo"].required = False files = () for file in instance.files.all(): files = files + ((file.id, file.file.url),) self.fields['photo'].choices = files In the template, I have the select list items as expected. However, I am unable to validate the form as it complains of the selected value not being in the available choices. Printing out the choices in the custom widget, gives me an empty tuple. class JQSelectMenuInputWidget(Select): template_name = "widgets/jqselectmenu.html" def __init__(self, attrs=None, choices=(), disabled_choices=()): super(JQSelectMenuInputWidget, self).__init__(attrs, choices=choices) self.disabled_choices = disabled_choices print(choices) So my question is, why is it that the choices that are set in the init method not being pass down the widget class. -
async django CBV methods post in class CreateVIew
I am need help in using async to python django in base class view. class IndexPage(CreateView): """Page index site""" async def post(self, request, *args, **kwargs) -> object: await send_code(data['email']) return render(request, 'activate.html') return super().post(request, *args, **kwargs) If you create this function simply as a function without a class, everything works fine, but an error occurs when using the class: IndexPAge HTTP handlers must either be all sync or all async. Please help anyone who has encountered this problem, thank you. -
I want to be able to update a user's password in my React.js and Django app
Backend is Dango The front end is made with React.js. What I want to achieve it I want to users to update their registered passwords. Issue/error message If you update the password on the React.js side, it will look like the following and the update will fail. . Django side Terminal {'password': 'welcome1313'} username {'detail': [ErrorDetail(string='Invalid data. Expected a dictionary, but got str.', code='invalid')]} Bad Request: /users/12/ [15/Jan/2023 15:42:10] "PATCH /users/12/ HTTP/1.1" 400 13 React.js const MyPagePasswordUpdate = () => { const [my_password, setValue] = useState(null); const [my_ID,setMyID] = useState(null); const isLoggedIn= useSelector(state => state.user.isLoggedIn); const { register, handleSubmit, errors } = useForm(); useEffect(() => { async function fetchData(){ const result = await axios.get( apiURL+'mypage/', { headers: { 'Content-Type': 'application/json', 'Authorization': `JWT ${cookies.get('accesstoken')}` } }) .then(result => { setValue(result.data.password); setMyID(result.data.id); }) .catch(err => { console.log("err"); }); } fetchData(); },[]); const update = async (data) =>{ console.log(data) await axios.patch(`${apiURL}users/`+my_ID+'/', { headers: { 'Content-Type': 'application/json', 'Authorization': `JWT ${cookies.get('accesstoken')}` }, password:data.password, }, ).then(message => { alert("Updated!") }) .catch(err => { console.log("miss"); alert("The characters are invalid"); }); }; return ( <div> {isLoggedIn ? <div class="update-block"> <form onSubmit={handleSubmit(update)}> <label for="password">Password:</label> <input className='form-control' type="password" {...register('password')} /> <input className='btn btn-secondary' type="submit" value="Update" /> </form> <Link to="/mypage">Back to … -
How do I build a django chat app with multiple chat rooms?
I've build a real time chat app using django channels, but all the users can only connect to the same chat room even if they're in a different urls, there is only one websocket connection, I want to know how I can make it so each chat room url would be a different websocket connection. I've tried to use the following code so every url 'chat-room/<chat_room_id>' would be a different chat room, but if I go to chat-room/1 and send a message, the same message appears on chat-room/2 here is my code: consumers.py import json from channels.generic.websocket import AsyncWebsocketConsumer from asgiref.sync import async_to_sync class ChatConsumer(AsyncWebsocketConsumer): async def connect(self): self.room_group_name = 'test' await self.channel_layer.group_add( self.room_group_name, self.channel_name ) await self.accept() async def receive(self, text_data): text_data_json = json.loads(text_data) message = text_data_json['message'] author = text_data_json['author'] await self.channel_layer.group_send( self.room_group_name, { 'type':'chat_message', 'message':message, 'author':author } ) async def chat_message(self, event): message = event['message'] author = event['author'] await self.send(text_data=json.dumps({ 'type':'chat', 'message':message, 'author':author })) routing.py from django.urls import re_path from . import consumers websocket_urlpatterns = \[re_path(r'ws/socket-server/', consumers.ChatConsumer.as_asgi())] urls.py from django.urls import path from . import views urlpatterns = \[path('chat-room/<int:chat_room_id>', views.chat_room, name='chat-room')] views.py from django.shortcuts import render, HttpResponse, redirect def chat_room(request, chat_room_id): if request.user.is_authenticated: return render(request, 'chat-room.html') else: return … -
django Count aggregate is not working as I intended
It's a code that reproduces the problem I experienced. models.py from django.db import models class User(models.Model): pass class Group(models.Model): users = models.ManyToManyField( User, related_name='groups', ) class Notice(models.Model): groups = models.ManyToManyField( Group, related_name='notices', ) tests.py from django.test import TestCase from tests.models import User, Group, Notice from django.db.models.aggregates import Count def print_user_count(group): count = group.users.count() annotate_count = ( Group.objects .annotate( user_count=Count('users'), notice_count=Count('notices') ) .get(id=group.id) .user_count ) print('count: %d, annotate_count: %d' % (count, annotate_count)) class ModelTestCase(TestCase): def test_(self): user1 = User.objects.create() group1 = Group.objects.create() group1.users.set([user1]) print_user_count(group1) # count: 1, annotate_count: 1 for _ in range(5): notice = Notice.objects.create() notice.groups.set([group1]) print_user_count(group1) # count: 1, annotate_count: 5 I didn't add users to the group. But the value obtained using annotate has increased from 1 to 5. Is this a bug? Or did I use something wrong? -
pytest fail on github action. TypeError: expected str, bytes or os.PathLike object, not NoneType
when run pytest on local works well. but it fail on github actions . I set secret key on github settings and uploaded .env.test to github repository both. Is it dotenv package problem? or else? What is the cause? Please give me solution thank u workflow.yml file name: Django CI on: [pull_request, push] # activates the workflow when there is a push or pull request in the repo jobs: test_project: runs-on: ubuntu-latest # operating system your code will run on steps: - uses: actions/checkout@v2 env: SERVER_ENV: "test" DEBUG: ${{secrets.SECRET_KEY}} SECRET_KEY: ${{secrets.SECRET_KEY}} DB_ENGINE: ${{secrets.DB_ENGINE}} DB_NAME: ${{secrets.DB_NAME}} USER: ${{secrets.USER}} PASSWORD: ${{secrets.PASSWORD}} POSTGRES_USER: ${{secrets.POSTGRES_USER}} POSTGRES_PASSWORD: ${{secrets.POSTGRES_PASSWORD}} POSTGRES_DB: ${{secrets.POSTGRES_DB}} HOST: ${{secrets.HOST}} PORT: ${{secrets.PORT}} CELERY_BROKER_URL: ${{secrets.CELERY_BROKER_URL}} LOG_LEVEL: ${{secrets.LOG_LEVEL}} NAVER_NEW_API_CLIENT_ID: ${{secrets.NAVER_NEW_API_CLIENT_ID}} NAVER_NEW_API_CLIENT_SECRET: ${{secrets.NAVER_NEW_API_CLIENT_SECRET}} DJANGO_ALLOWED_HOSTS: ${{secrets.DJANGO_ALLOWED_HOSTS}} - uses: actions/setup-python@v2 - name: Install Dependencies run: pip install -r requirements.txt # install all our dependencies for the project - name: Run Pytest run: pytest . # run pytest test error log Traceback (most recent call last): File "/opt/hostedtoolcache/Python/3.11.1/x64/bin/pytest", line 8, in <module> sys.exit(console_main()) ^^^^^^^^^^^^^^ File "/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/_pytest/config/__init__.py", line 190, in console_main code = main() ^^^^^^ File "/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/_pytest/config/__init__.py", line 148, in main config = _prepareconfig(args, plugins) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/_pytest/config/__init__.py", line 329, in _prepareconfig config = pluginmanager.hook.pytest_cmdline_parse( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/hostedtoolcache/Python/3.11.1/x64/lib/python3.11/site-packages/pluggy/_hooks.py", line 265, … -
Django Form and some ForeingKey fields
Please tell me, when a model has a lot of related fields with other tables, how to make a normal form with filling such a model? How do I create a form for Project? class City(models.Model): obl = models.CharField(max_length=255, choices=REGIONS, default="24", verbose_name="Регион") name = models.CharField(max_length=128, verbose_name="Город") population = models.IntegerField() class Address(models.Model): city = models.ForeignKey(City, on_delete=models.PROTECT, verbose_name="Город") street = models.CharField(max_length=255, verbose_name="Улица") numb = models.CharField(max_length=64, verbose_name="Номер дома") class Project(models.Model): manager = models.ForeignKey(User, on_delete=models.PROTECT, verbose_name="Сотрудник") address = models.ForeignKey(Address, on_delete=models.PROTECT, verbose_name="Адрес") vis = models.DateField(verbose_name="Подписан дата", blank=True) accept = models.DateField(verbose_name="Принят дата", blank=True) Maybe I need a step-by-step fill-in form -
How to update all parts of a web page containing the same object without reloading the page?
I'm using Javascript to make part of my web page editable for logged-in admin users. In one page, I have cards that display information about three people from the database. The cards contain username, skills, and bio fields. The username is also used a second time in the bio. When the edit button is clicked, the first username, skills, and the bio without the username become editable. And when I change the username and click on the save button only the first username changes. For the one in the bio to update I need to reload the page even though they have the same id in my HTML template. How can I change the second one as well without reloading the page? about.html: % extends "potbs/layout.html" %} {% load static %} {% block script %} <script src="{% static 'potbs/about.js' %}"></script> {% endblock %} {% block body %} <div class="container"> <div class="row justify-content-center"> {% for member in team_members %} <div class="col" id="border"> <!--If user is admin, show edit button--> {% if user.is_superuser %} <div class="position-relative" id="edit_button_{{member.id}}" style="display: block;"> <button class="btn btn-lg position-absolute top-0 end-0" id="edit_profile" data-id="{{member.id}}" data-username="{{member.username}}"> <i class="fa fa-edit fa-solid" style="color: white; margin-right: 5px;"></i></button> </div> {% endif %} <div class="col-xs-12 … -
django 'bool' object is not callable exception while saving models
I have user model which is like: class User(AbstractUser): auth_sub = models.CharField(max_length=200, null=True) class Meta: db_table = "auth_user" but while saving models with user.save() following exception is raised: --bool' object is not callable-- Any help? Thanks I looked all fields for this model. But only extra field is auth_sub which is not used as in-built fields for AbstractUser. -
How to create single column Filter (Choices) Drop-down (select) Django form?
Good day! I would be very grateful for any help. I have a model. There are repeating elements in one column of this model. I want to inject the result of a query into a view. The result of a query with a single column filter. That is, it turns out that I want to take from the model only those rows of the table -->> where the value is equal to the one selected from the drop-down menu (in a simple filter form). ['Gary', 'Henry', 'Shtefan', 'Villi'] For example, select only those rows in the row (empname) whose value is equal to Shtefan. Without the use of a static, manual entry in the code. Since it is possible that when the model table is replenished - with new data - there will be additions with other names. Is it possible somehow to take unique values without duplicates from the corresponding column and automatically use them in the filter? To be placed in a drop-down menu form (in a simple filter form). static class Developer(models.Model): JUNIOR = 'JR' MIDDLE = 'ML' SENIOR = 'SR' LEVEL_CHOICES = ( (JUNIOR, 'Junior'), (MIDDLE, 'Middle'), (SENIOR, 'Senior'), ) name = models.CharField(max_length=200) level = models.CharField(max_length=2, … -
Vitejs/Rollupjs/Esbuild: bundle content scripts for chrome extension
How to correctly bundle content scripts for a chrome extension using Vite.js? Content scripts do not support ES modules (compared to background service worker), so every content script javascript file should not have any import/export statements, all libraries and other external imports should be inlined in every content script as a single file. I'm currently using the following vite configuration, where I programmatically pass all my content script paths as the entry. vite.config.ts export const extensionScriptsConfig = ( entry: string[], outDir: string, mode: Env, ): InlineConfig => { const config = defineConfig({ root: __dirname, mode, build: { outDir, emptyOutDir: false, minify: false, copyPublicDir: false, target: 'esnext', lib: { entry, formats: ['es'], fileName: (_, entry) => entry + '.js', }, }, }); return { configFile: false, ...config }; }; entry contains the following paths Directory: C:\Users\code\extension\src\content-scripts Mode LastWriteTime Length Name ---- ------------- ------ ---- -a--- 15/01/2023 14:11 1135 inject-iframe.ts -a--- 15/01/2023 14:11 2858 inject.ts -a--- 14/01/2023 17:49 223 tsconfig.json The setup above works correctly - each content script is a separate file with no import. But when I try to import a node_module into inject-iframe.ts and inject.ts the following happens in the dist folder: dist\src\content-scripts\inject.js import { m as mitt } … -
Why is path imported once in Settings. py and again in urls.py in Django
I am new to Django. I noticed that path command is imported once in Settings.py and then again in Urls.py. From the name "Settings.py", I assumed that Settings.py will always get loaded first when we run a project as it contains, again as I assumed, the settings to be applied for the project. If that is correct, then why does path get imported again in Urls.py when Django already imported this once in Settings.py? If not, can you please elaborate so I understand why Settings.py and Urls.py can run independently. I did try to google to see if I could get the answer myself but did not find any. Thanks. -
How to upload an image using a post api in django
I am working on a project using django 3.1 for backend and vue 3 for frontend. I am pretty new to Django so I am still learning the ropes and I do not know if what I am trying is totally wrong. I created a model that holds a user email and and an image field as follows: class UsedBike(models.Model): sellerEmail = models.CharField(max_length=255) image = models.ImageField(upload_to='uploads/', blank=True, null=True) class Meta: ordering = ('sellerEmail', ) def __str__(self): return self.sellerEmail def get_image(self): if self.image: return 'http://127.0.0.1:8000' + self.image.url return '' I created a serializer for my model as follows: class UsedBikeSerializer(serializers.ModelSerializer): class Meta: model = UsedBike fields = ( "id", "sellerEmail", "get_image", ) and in the views file, I created a function for saving the data in the database: @api_view(['POST']) def sellBike(request): serializer = UsedBikeSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) I also registered the url in the urls file. As for vue part, I used axios to send my post request as follows: submitData() { const formData = { sellerEmail: this.sellerEmail, image: this.productImage } axios .post("/api/v1/sell-bike/", formData) .then(response => { console.log(response) }).catch(error => { console.log(error) }) }, where in the template I am getting the inputs like this: <input type="text" v-model="sellerEmail"> <input … -
Django: Validate relationships among ForeignKeys
I have a model Run with two ForeignKeys, signup and report, class Run(models.Model): signup = models.ForeignKey(Signup, on_delete=models.CASCADE, related_name="runs") report = models.ForeignKey(Report, on_delete=models.CASCADE, related_name="runs") pointing to models, which in turn are related to another model, Training, class Report(models.Model): training = models.OneToOneField( Training, on_delete=models.CASCADE, primary_key=True ) class Signup(models.Model): training = models.ForeignKey( Training, on_delete=models.CASCADE, related_name="signups" ) When creating a Run I would like to make sure, that it's signup and report are for the same Training, i.e. that report.training == signup.training. What is this kind of validation called? And how would I achieve it? Also, I am happy to learn other ways to implement this, if another database structure would be better. -
Page not found(404) : No category matches the given query
Below is my error Page not found(404) No category matches the given query. request method: GET Request URL: http://127.0.0.1:8000/store/slug/ Raised by: store.views.product_in_category Using the URLconf defined in rhizomeedu_prj.urls, Django tried these URL patterns, in this order: admin/ noticeboard/ markdownx/ store/ [name='product_all'] store/ <slug:category_slug>/ [name='product_in_category'] The current path, store/slug/, matched the last one. And this is the model of Category. class Category(models.Model): name = models.CharField(max_length=200, db_index=True) meta_description = models.TextField(blank=True) slug = models.SlugField(max_length=200, db_index=True, unique=True, allow_unicode=True) class Meta: ordering = ['name'] verbose_name = 'category' verbose_name_plural = 'categories' def __str__(self): return self.name def get_absolute_url(self): return reverse('store:product_in_category', args={"slug":self.slug}) Related part of views.py def product_in_category(request, category_slug=None): current_category = None categories = Category.objects.all() products = Product.objects.filter(available_display=True) if category_slug: current_category = get_object_or_404(Category, slug=category_slug) products = products.filter(category=current_category) return render(request, 'store/product_list.html', {'current_category': current_category, 'categories': categories, 'products': products}) And this is related part of urls.py path('', product_in_category, name="product_all"), path('<slug:category_slug>/', product_in_category, name="product_in_category"), (...) Lastly, this is related part of the template product_list.html <div class="py-3"> <ul class="nav nav-tabs justify-content-center"> <li class="nav-item"> <a class="nav-link {% if not current_category %}active{% endif %}" href="/store/">전체</a> </li> {% for c in categories %} <li class="nav-item"> <a class="nav-link {% if current_category.slug == c.slug %}active{% endif %}" href="{{c.get_absolute_url}}" style="color:black">{{c.name}}</a> </li> {% endfor %} </ul> </div> Every time I click … -
Enabling gzip compression for CSS and JS files with Django compressor on Heroku
I am currently working on a small Django project that is deployed on Heroku. In order to optimize the website's performance, I decided to use the django-compressor package to merge and minify all the JavaScript and CSS files. I am using the offline compression option, as it is the only one that works on Heroku. However, I have noticed that the compressed CSS and JS files are not being gzipped when delivered to the client. This is causing the benefits I gained from using the compressor to be lost. I have been trying to find a solution to this issue, but I have not been able to find an easy way to turn on gzip for the compressor when using offline compression. I would like to avoid a complex setup with S3, as this is a small site and I am looking for a simple solution that can be easily implemented on Heroku. My question is: Is there an easy way to turn on gzip for compressor when using offline compression? And how can I implement it on Heroku? I would greatly appreciate any help or suggestions on how to solve this problem. Thank you in advance. -
How to change the default django project directory in linode
I want to deploy a django application using linode. In the /var/www directory in my linode server, there is a default django application named, DjangoApp. I dont want to use this default application to deploy my app so I have cloned my django project into the same directory but linode only listens to the default project. Please how do i make linode listen to my new project instead? -
Cannot force an update in save() with no primary key ERROR
Cannot going on with my project. I try to register user or login with the right username and password, but provides me error. ValueError: Cannot force an update in save() with no primary key. Views.py from django.shortcuts import render, redirect from django.contrib.auth import authenticate, login, logout from django.contrib.auth.forms import UserCreationForm from django.contrib import messages from .models import Profile, Order, BuyOffer from django.views.decorators.csrf import csrf_exempt from .forms import OrderForm, BuyForm import requests def login_user(request): price = get_price() if request.method == "POST": username = request.POST['username'] password = request.POST['password'] user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('profile') else: messages.success(request, 'There was an error logging in, try again...') return render(request, 'app/login_user.html', {'price': price}) else: return render(request, 'app/login_user.html', {'price': price}) The problem is in line login(request, user) Models.py from django.db import models from django.contrib.auth.models import User from django.utils import timezone class Profile(models.Model): user_profile=models.ForeignKey(User,on_delete=models.CASCADE) btc=models.IntegerField(default=5) usd=models.IntegerField(default=100000) initial_balance=models.IntegerField() -
Custom django inlineformset validation based on user permissions
The objective is to have a simple workflow where an order and associated orderlines (created in a previous step) needs to be approved by the relevant budget holder. The approval form shows all order lines but disables those lines that the current user is not associated with (they should be able to see the overall order but only be able to edit lines that they are permitted to). They should be able to add new lines if necessary. The user needs to decide whether to approve or not (approval radio cannot be blank) The initial form presents correctly and is able to save inputs correctly when all values are inputted correctly - however, if it fails validation then the incorrect fields get highlighted and their values are cleared. models.py class Order(models.Model): department = models.ForeignKey(user_models.Department, on_delete=models.CASCADE) location = models.ForeignKey(location_models.Location, on_delete=models.CASCADE, null=True) description = models.CharField(max_length=30) project = models.ForeignKey(project_models.Project, on_delete=models.CASCADE) product = models.ManyToManyField(catalogue_models.Product, through='OrderLine', related_name='orderlines') total = models.DecimalField(max_digits=20, decimal_places=2, null=True, blank=True) def __str__(self): return self.description class OrderLine(models.Model): order = models.ForeignKey(Order, on_delete=models.CASCADE) project_line = models.ForeignKey(project_models.ProjectLine, on_delete=models.SET_NULL, null=True, blank=False) product = models.ForeignKey(catalogue_models.Product, on_delete=models.CASCADE) quantity = models.PositiveIntegerField() price = models.DecimalField(max_digits=20, decimal_places=4) total = models.DecimalField(max_digits=20, decimal_places=2) budgetholder_approved = models.BooleanField(null=True) def get_line_total(self): total = self.quantity * self.price return … -
Django templates error; Reverse for 'search' not found. 'search' is not a valid view function or pattern name
my layout: {% load static %} <!DOCTYPE html> <html lang="en"> <head> <title>{% block title %}{% endblock %}</title> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"> <link href="{% static 'encyclopedia/styles.css' %}" rel="stylesheet"> </head> <body> <div class="row"> <div class="sidebar col-lg-2 col-md-3"> <h2>Wiki</h2> <form action = "{% url 'search' %}" method="GET"> <input class="search" type="text" name="q" placeholder="Search Encyclopedia"> </form> <div> <a href="{% url 'index' %}">Home</a> </div> <div> <a href = "{% url 'newpage' %}">Create New Page</a> </div> <div> <a>Random Page </a> </div> {% block nav %} {% endblock %} </div> <div class="main col-lg-10 col-md-9"> {% block body %} {% endblock %} </div> </div> </body> </html> my views.py: def search(request): result = set() entries = util.list_entries() if request.method == 'GET': query = request.GET.get('q') if query == '': #If it's nothing query = 'NONE' if query in entries: return redirect(f'wiki/{query}') else: results = [entry for entry in entries if query.lower() in entry.lower()] return render(request, "encyclopedia/index.html", { "entries": results }) return render(request, 'encyclopedia/search.html', {'results':result}) my urls: from django.urls import path from django.conf import settings from django.conf.urls.static import static from . import views app_name = 'encyclopedia' urlpatterns = [ path("", views.index, name="index"), path('newpage/', views.new_page, name = 'newpage'), path('wiki/<str:title>', views.entry, name = 'entries'), path('wiki/<str:title>/edit',views.edit, name = 'edit'), path('search', views.search, name = 'search'), … -
Unable to load logged in User's Profile Image in Django template
This is my frontend code of header.html where I am typing to display the currently logged-in user's profile picture after the user authenticates. It works when my current user is on the home page or its profile but as soon as it moves to another's profile it starts displaying that profile's picture. I want to make it such like where ever logged in user move he/she should always see their profile picture <div><b><a href="{% url 'index' %}">Bondly</a></b></div> {% if user.is_authenticated %} <div> -------> <img src="{{user_profile.img_profile.url}}" /> </div> {% endif %} </header> Here are code of my views.py def profile(request, pf): user_object = User.objects.get(username=pf) user_profile = models.Profile.objects.get(usr=user_object) print(request.user.__doc__) posts = models.Post.objects.filter(user=pf) postsNum = len(posts) follor = request.user.username if models.Followers.objects.filter(follower=follor, user=pf).first(): text = "Following" else: text = "Follow" followers = len(models.Followers.objects.filter(user=pf)) following = len(models.Followers.objects.filter(follower=pf)) context = { 'user_object': user_object, "user_profile": user_profile, "posts": posts, 'postsNum': postsNum, "text": text, "followers": followers, "following": following } return render(request, 'profile.html', context) and my models.py class Profile(models.Model): """docstring for Profile.""" usr: str = models.ForeignKey(User, on_delete=models.CASCADE) id_usr: int = models.IntegerField() Fname:str = models.TextField(blank=True,null=True) Mname:str = models.TextField(blank=True,null=True) Lname:str = models.TextField(blank=True,null=True) Fhone:int = models.IntegerField(blank=True,null=True) bio: str = models.TextField(blank=True) img_profile = models.ImageField( upload_to='ProfileIMG', default="blankprofile.png") location: str = models.CharField(max_length=250) def __str__(self): return self.usr.username