Django community: RSS
This page, updated regularly, aggregates Django Q&A from the Django community.
-
Django - get message from websocket
I would like to be able to receive a message from the user POST /createEvent and immediately give it to all other users via websocket /wsEvens But it's not clear to me how to make interaction between these interfaces in Django I use Django + DRF -
Problems configuring site on PythonAnywhere
I am trying deploy a test web app on PythonAnywhere by pulling my code from my Github repo using a helper tool by PythonAnywhere. I used this command: $ pa_autoconfigure_django.py --python=3.8 https://github.com/<your-github-username>/repository.git Then after a prompt for my username and password ( had to use a token because it is required) and putting them in I got this error: remote: Write access to repository not granted. fatal: unable to access 'https://github.com/Username/Myrepo.git/': The requested URL returned error: 403 Traceback (most recent call last): File "/home/Username/.local/bin/pa_autoconfigure_django.py", line 49, in <module> main( File "/home/Username/.local/bin/pa_autoconfigure_django.py", line 31, in main project.download_repo(repo_url, nuke=nuke), File "/home/Username/.local/lib/python3.8/site-packages/pythonanywhere/django_project.py", line 20, in download_repo subprocess.check_call(['git', 'clone', repo, str(self.project_path)]) File "/usr/lib/python3.8/subprocess.py", line 364, in check_call raise CalledProcessError(retcode, cmd) subprocess.CalledProcessError: Command '['git', 'clone', 'https://github.com/username/repo.git', '/home/username/username.pythonanywhere.com']' returned non-zero exit status 128 Can someone tell me what im doing wrong? -
How deep can "django-nested-admin" have nested inlines?
django-nested-admin shows the code example which has 3 levels "TableOfContentsAdmin", "TocSectionInline" and "TocArticleInline" as shown below: # An example admin.py for a Table of Contents app from django.contrib import admin import nested_admin from .models import TableOfContents, TocArticle, TocSection class TocArticleInline(nested_admin.NestedStackedInline): # 3rd Level model = TocArticle sortable_field_name = "position" class TocSectionInline(nested_admin.NestedStackedInline): # 2nd Level model = TocSection sortable_field_name = "position" inlines = [TocArticleInline] class TableOfContentsAdmin(nested_admin.NestedModelAdmin): # 1st Level inlines = [TocSectionInline] admin.site.register(TableOfContents, TableOfContentsAdmin) Now, how deep can django-nested-admin have nested inlines? Only 3 levels? -
I don't want drf ValidationError response string boolean
raise ValidationError(detail={"something": True}) Response: { "something": "True" } Looging for: { "something": true } -
The view main.views.home didn't return an HttpResponse object. It returned None instead
Okay so I looked through a few different slack posts on this ValueError, but it seemed most of them had to do with not returning render which it seems like I am doing that correct..? I am sure it has to do with my if statements, just not sure what exactly or how to set the code up correctly so I can check the form request to the browser. views.py: from http.client import responses from django.shortcuts import render from .forms import SearchUser from .search import search def home(request): if request.method == "POST": form = SearchUser(request.POST) if form.is_valid(): form.cleaned_data["name"] else: return render(request, "main/home.html", { 'form': SearchUser(), # Reference to form 'userid': search(request), # 'mmr':NA, }) search.py: import requests def search(request): data = requests.get( f"https://americas.api.riotgames.com/riot/account/v1/accounts/by-riot-id/{name}/NA1?api_key=RGAPI-d1224a2c-9130-45ff-8c05-0656d56d105f") return data.json()['puuid'] urls.py: from django.urls import path from . import views urlpatterns = [ path("", views.home, name=""), #path("", views.search, name=""), ] home.html: {% extends 'main/base.html'%} {% block content %} <h2>Valorant Ranked Checker</h2> <form method="post" action=""> {% csrf_token %} {{form}} <button type="submit" name="search"> Get rank </button> </form> <p><strong>{{userid}} - {{mmr}}</strong></p> {% endblock %} -
Django & React implementation using Google OAuth2 does not work with csrftoken
I have implemented Django backend for Google OAuth2 signin/signup process for user authorization. The mechanism is triggered from React UI. The user can successfully signup using Django backend and I can see the associated users are created in Django Admin. However, when I try to use the same user information through React UI, "me" API call cannot access to the Django user that has signed in. But direct Django call through browser and curl command works fine. The following command works fine with backend call : curl -X GET --header "Cookie: csrftoken=M1kFFNataWZcbckfdrqUEiXuRRsSRwYKKCH4XvENUyWnLE9xnSMHe7DiaUcDBRU6; sessionid=p156z2d5gy9cwamojxvmxbopg84p99v6" http://localhost:8000/registration/me/ Below is Django settings for Cors and CSRF : CORS_ORIGIN_ALLOW_ALL = True ALLOWED_HOSTS = ['*'] CORS_ALLOWED_ORIGINS = [ "http://localhost:3000", ] CORS_ALLOW_ALL_ORIGINS=True CORS_ALLOW_CREDENTIALS = False CORS_ORIGIN_WHITELIST = [ 'http://localhost:3000' ] CSRF_COOKIE_NAME = "csrftoken" CSRF_COOKIE_HTTPONLY = False CORS_EXPOSE_HEADERS = ["Content-Type", "X-CSRFToken"] CORS_ALLOW_CREDENTIALS = True CSRF_COOKIE_AGE = None CSRF_COOKIE_DOMAIN = 'localhost' CSRF_COOKIE_HTTPONLY = True CSRF_COOKIE_SECURE = True CSRF_USE_SESSIONS = True Below is rest framework settings : REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',), 'DEFAULT_AUTHENTICATION_CLASSES': ( 'rest_framework.authentication.SessionAuthentication', 'rest_framework_simplejwt.authentication.JWTAuthentication', ), 'DEFAULT_PERMISSIONS_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ) } The API call from Django for "me" : @api_view(['GET']) def current_user(request): from rest_framework.permissions import IsAuthenticated permission_classes = [IsAuthenticated] user = request.user if user.is_authenticated: return Response({ 'username' : user.username, … -
is there anyway to add multiple class to cart in django?
I'm creating a e-commerce website in django i want to add product class and variation class to my cart is there anyway to do this? I checked the similar questions but i couldn't find any solution I Tried to Models.py class Product(models.Model): category = models.ForeignKey(Category,on_delete=models.CASCADE,verbose_name='Kategori') name = models.CharField(max_length=200,null=True,verbose_name='Başlık') class MainVariation(models.Model): category = models.ForeignKey(Category,on_delete=models.CASCADE,verbose_name='Kategori',blank=True,null=True) gender = models.ManyToManyField(Gender,verbose_name='Cinsiyet',blank=True,null=True) mainvar = models.ForeignKey(Product,on_delete=models.CASCADE,verbose_name='Ana Ürün') name = models.CharField(max_length=200,null=True,verbose_name='Başlık') Cart.py from django.conf import settings from Products.models import Product class Cart(object): def __init__(self, request): self.session = request.session cart = self.session.get(settings.CART_SESSION_ID) if not cart: cart = self.session[settings.CART_SESSION_ID] = {} self.cart = cart def __iter__(self): for p in self.cart.keys(): self.cart[str(p)]['product'] = Product.objects.get(pk=p) for item in self.cart.values(): item['total_prices'] = int(item['product'].price * item['quantity']) yield item def __len__(self): return sum(item['quantity'] for item in self.cart.values()) def save(self): self.session[settings.CART_SESSION_ID] = self.cart self.session.modified = True def add(self, product_id, quantity=1, update_quantity=False): product_id = str(product_id) if product_id not in self.cart: self.cart[product_id] = {'quantity': 1, 'id': product_id} if product_id in self.cart: self.cart[product_id]['quantity'] += int(quantity) if self.cart[product_id]['quantity'] == 0: self.remove(product_id) self.save() def remove(self, product_id): if product_id in self.cart: del self.cart[product_id] self.save() def get_total_cost(self): for p in self.cart.keys(): self.cart[str(p)]['product'] = Product.objects.get(pk=p) return int(sum(item['product'].price * item['quantity'] for item in self.cart.values())) def get_item(self, product_id): if str(product_id) in self.cart: return self.cart[str(product_id)] else: return … -
ValueError: the field was declared with a lazy reference but app doesn't provide model
I know there are several similar questions. But I don't understand where I need to change my dependencies. And I'm very afraid to change it, because I don't understand it. I have a lot problems when I created local database. I solved all isues. Then I go to production database. And have problems again. I solved it. And then I returned to development. And again I had issues. I think my problem is changing event.Team for production, when in development I have Team (from mission.models import Team). When I solved issues in production, I went to development database and I had: ValueError: The field accounts.Member.id_team was declared with a lazy reference to 'event.team', but app 'event' doesn't provide model 'team'. class Member(models.Model): id_user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="ninja", blank=True, null=True) id_team = models.ForeignKey("event.Team", null=True, blank=True, on_delete=models.SET_NULL) this is my showmigration files: [X] 0052_alter_member_id_user [ ] 0053_alter_member_id_user [ ] 0054_remove_member_id_team [ ] 0055_remove_member_id_user [ ] 0056_remove_goal_id_member [ ] 0057_member_id_user [ ] 0058_remove_member_id_user [ ] 0059_member_id_team_member_id_user [ ] 0060_remove_member_id_user [ ] 0061_delete_member [ ] 0062_member [ ] 0063_delete_member [ ] 0064_member [ ] 0065_member_id_team_member_id_user [ ] 0066_remove_member_id_team [ ] 0067_member_id_team Can you please advice. In what migration files I need to write some … -
Django Permissions traversal across multiple foreign keys
I have 4 core entity models: User Can be an Owner or Participant on a Collection Collection Recipe A recipe has a foreign key to a collection Steps A step has a foreign key to a recipe In order to enable the above, I think I need a model for each of them as well as a model (let's call it CollectionContributor) with the following fields: contributor - this would be a foreign key to the user model collection - this would be a foreign key to the collection On the Collection then, I'd add a many to many field that looks like this: class Collection(models.Model): ... contributors = models.ManyToManyField(settings.AUTH_USER_MODEL, through='CollectionContributor') Now, let's say I want to provide a page that lists all "step" across all recipes. If I want to limit that view to those steps that are part of recipes that are part of collections that the user has access to, how would I do that. Essentially, how can I manage permissions that require traversal of multiple foreign keys? I assumed it might be something like the following. But it seems terribly inefficient, and could lead to performance issues if entities go several layers deep. Is this the … -
Get json data from from django-rest-api with react frontend into a variable
I am new to react and javascript. I am trying to get some data INTO A VARIABLE in react from django-rest API. I am using this variable in another function using react-beautiful-dnd. I have the API set up and CORS also set up. This is the output in http://127.0.0.1:8000/api/column_names/ I am trying to get this as a json object in react frontend. const getData = async () => { let response = await fetch("http://127.0.0.1:8000/api/column_names/"); let data = await response.json(); console.log(data); // line 29 return data; }; let columnFromBackend = getData(); console.log(columnFromBackend); // line 34 This is the output Is there any way to get this data into the variable columnFromBackend I am trying to get the equivalent of this value. let columnFromBackend = { idone: { name: "In progress", items: [{ id: "hjnmkjnh", content: "first" }], }, idtwo: { name: "Todod", items: [], }, }; If I declare the variable directly like this, then this is the output that I am getting and what I am trying to get from the api. -
Why I have this error message, and How can correct it?
cart.js:19 POST http://127.0.0.1:8000/update_item/ 500 (Internal Server Error) updateUserOrder @ cart.js:19 (anonymous) @ cart.js:12 VM2104:1 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0 function updateUserOrder(productId, action){ console.log('User is logged in, sending data....') var url = '/update_item/' fetch(url, { method:'POST', headers:{ 'Content-Type': 'application/json', 'X-CSRFToken':csrftoken, }, body: JSON.stringify({'productId':productId,'action:':action}), }) .then((response) =>{ return response.json() }) .then((data) =>{ console.log('data:',data) }); } -
Prevent Django from appending postgress timestamptz to query when importing data
I have a managment command for django, to import data from a csv file into an app. This management command works mostly fine, except that a date field in my model which has a default value for 'now' can't seemingly be overridden. This is the code for my 'load_data' management command: from django.db import connection import csv from django.core.management import BaseCommand from myapp.models import myitem class Command(BaseCommand): help = 'Load a csv file into the database' def add_arguments(self, parser): parser.add_argument('--path', type=str) def handle(self, *args, **kwargs): path = kwargs['path'] with open(path, 'rt', errors='ignore') as f: reader = csv.reader(f, dialect='excel') for row in reader: print ("\n22: "+row[0]+"\n") print("\nQuery: "+connection.queries) print ("\n\n24: "+row[1]+"\n") print ("\n24: "+row[2]+"\n\n") MyItem.objects.create( itemProp1=row[0], itemProp2=row[1], itemDate=row[2], ) The code mostly works, except trying to import the itemDate field, instead of being assigned via the value in the row being imported, django wants to set the time to now. The following error is generated, which is: django.db.utils.DataError: value too long for type character varying(20) The connection query being used when trying to import sample data, obtained via my printing it out above, is: INSERT INTO "myapp_myitem" ("itemProp1", "itemProp2", "itemDate") VALUES (\'heavy\', \'green\', '\'2022-06-23T00:00:00+00:00\'::timestamptz) The associated model I am trying to … -
Django views - Using requests
If I have a views.py function like this one right here: #imports env = environ.Env() environ.Env.read_env() def stocks(request): input_ticker = request.POST['ticker'] response = requests.get(f"https://cloud.iexapis.com/v1/stock/" + input_ticker + "/quote?displayPercent=true&token=" + env('API_IEX')) parsed = response.json() return render(request, 'result_api.html', {'api': parsed}) How can I scale up the flexibility and efficienty of my code if I want to add like 10-15 similar requests? (...) response2 = requests.get(f"https://cloud.iexapis.com/anything/anything/" + input_ticker + "/anything=true&token=" + env('API_IEX')) response3 = requests.get(f"https://cloud.iexapis.com/anything/anything2/" + input_ticker + "/anything2=true&token=" + env('API_IEX')) (...) parsed2 = response2.json() parsed3 = response2.json() (...) return render(request, 'result_api.html', {'api': parsed, 'api2': parsed2, 'api3': parsed3 , }) It would be pretty munch repeated, so I think there need to be a better way to solve this here. PS: I am more into Django than Python atm. Probably I miss something obvious out here :D -
how to mock the response from a library api in pytest
Writing an pytest for a function that is making api call using an installed package. How do you mock the response from the api response? This is how the function looks like import hubspot from pprint import pprint from hubspot. import ApiException def get_clicked_events(): client = hubspot.Client.create(api_key="YOUR_HUBSPOT_API_KEY") try: api_response = client.events_api.get_page(limit=100, event_type="clicked") pprint(api_response) return api_response except ApiException as e: print("Exception when calling events_api->get_page: %s\n" % e) -
Worker isns't populating some apps on Django
The worker from my django project isn't detecting some apps but other yes. All of them are in INSTALLED_APPS. And thats makeing it restarting endless. What could be it? here is the directory structure: -project -worker -pycache -init.py -celery.py -tasks.py The traceback below is getting error on bootstrapform, if I take off that from installed apps, the next module go to the traceback which is crispy_forms and so on. here is the traceback: Checking for celery... OK Starting worker using broker at redis://broker Checking for celery... OK Starting worker using broker at redis://broker self.django_setup() File "/usr/local/lib/python3.9/dist-packages/celery/fixups/django.py", line 118, in django_setup django.setup() File "/usr/local/lib/python3.9/dist-packages/django/__init__.py", line 24, in setup apps.populate(settings.INSTALLED_APPS) File "/usr/local/lib/python3.9/dist-packages/django/apps/registry.py", line 91, in populate app_config = AppConfig.create(entry) File "/usr/local/lib/python3.9/dist-packages/django/apps/config.py", line 90, in create module = import_module(entry) File "/usr/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 984, in _find_and_load_unlocked ModuleNotFoundError: No module named 'bootstrapform' Postgres is up - executing command wait-for-it.sh: waiting for broker:6379 without a timeout wait-for-it.sh: broker:6379 is available after 0 seconds wait-for-it.sh: waiting for webapp:8000 without a timeout wait-for-it.sh: webapp:8000 is available after 0 seconds Traceback (most recent call … -
Django REST how to not apply default permission for get request
I don't want to apply my permission_classes for get request. I tried @permission_classes(AllowAny) but didn't work. Here is my my code: class BlogViewSet(viewsets.ModelViewSet): queryset = Blog.objects.all() serializer_class = BlogSerializer pagination_class = BlogPagination lookup_field = 'blog_slug' permission_classes = [IsOwnerOrReadOnly & IsAuthorGroup] @permission_classes(AllowAny) def list(self, request): if request.method == "GET": blog = Blog.objects.all().order_by("id") serializer = BlogSerializer(blog, many=True) return Response(serializer.data) else: return Response(status=status.HTTP_404_NOT_FOUND) -
Django multi-table inheritance - make sure only one child exists (CheckConstraint)
How can I make sure that a parent object has only one child/type? class Property(...): class Meta: abstract = False class Flat(Property): pass class House(Property): pass class Land(Property): pass I want every property object to have none or at most one child. It can be either flat, house or land (or null). Is it possible to create a DB constraint for this? My idea was to create a constraint that checks: class Meta: constraints = [ models.CheckConstraint(check=Q(Q(flat__isnull=True) & Q(house__isnull=True)) | Q(Q(flat__isnull=True) & Q(land__isnull=True)) | Q(Q(house__isnull=True) & Q(land__isnull=True)), name="constraint")] But apparently, there are no such fields on a DB level (you can get flat by property.flat getter in Django but not in DB) EDIT: properties.Property: (models.E012) 'constraints' refers to the nonexistent field 'flat'. -
sitemaps returns NoReverseMatch at /sitemap.xml
I'm trying to add sitemaps in my application, but when i add a url that has slug, it throws me an error in http://127.0.0.1:8000/sitemap.xml Reverse for 'view-Question' with no arguments not found. 1 pattern(s) tried: ['questions/(?P[-a-zA-Z0-9_]+)/\Z'] i follow this Tutorial my urls: sitemaps = { 'static': StaticViewSitemap, } path('', views.Home, name='Home'), path('login', views.login, name='login'), path('register/', views.register, name='register'), path('Terms', views.rules, name='Rules'), path('questions/<slug:slug>/', views.viewQuestion, name='view-Question'), path('feedback/', views.PostFeedBack.as_view(), name='FeedBack'), path('sitemap.xml', sitemap, {'sitemaps': sitemaps}, name='django.contrib.sitemaps.views.sitemap'), my sitemaps.py file: from django.contrib import sitemaps from django.urls import reverse class StaticViewSitemap(sitemaps.Sitemap): priority = 0.5 changefreq = 'daily' def items(self): return ['Home', 'login', 'register', 'Rules', 'FeedBack', 'view-Question'] def location(self, item): return reverse(item) Thanks. -
Can django-nested-admin sort the top level items in select-to-change list in addition to inline items?
I could sort inline items with django-nested-admin as shown below: But, I couldn't sort the top level items in select-to-change list as shown below: This is the code in "models.py" as shown below: # "models.py" from django.db import models class Country(models.Model): name = models.CharField(max_length=100) position = models.PositiveSmallIntegerField("Position", null=True, blank=True) class Meta: ordering = ('position',) def __str__(self): return self.name class Province(models.Model): name = models.CharField(max_length=100) country = models.ForeignKey(Country, on_delete=models.CASCADE) position = models.PositiveSmallIntegerField("Position", null=True) class Meta: ordering = ('position',) def __str__(self): return self.name class City(models.Model): name = models.CharField(max_length=100) province = models.ForeignKey(Province, on_delete=models.CASCADE) position = models.PositiveSmallIntegerField("Position", null=True) class Meta: ordering = ('position',) def __str__(self): return self.name And, this is the code in "admin.py" as shown below: # "admin.py" from nested_admin import SortableHiddenMixin, NestedTabularInline, NestedModelAdmin from .models import Country, Province, City class CityInline(SortableHiddenMixin, NestedTabularInline): model = City sortable_field_name = "position" class ProvinceInline(SortableHiddenMixin, NestedTabularInline): model = Province sortable_field_name = "position" inlines = (CityInline,) @admin.register(Country) class CountryInlineAdmin(SortableHiddenMixin, NestedModelAdmin): sortable_field_name = "position" inlines = (ProvinceInline,) Are there any ways to sort the top level items in select-to-change list? Or, is it impossible to sort the top level items with django-nested-admin? -
How to store the form data into database in django?
#I have this code for a message form and I want to store each message into the database #I have the code below : #The View code : class Contact(LoginRequiredMixin , CreateView ): template_name = "business/contact.html" form_class = ContactUsForm success_url = reverse_lazy("home") def form_valid(self, form): form.save() return super().form_valid(form) def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) context["services"] = Service.objects.all() return context #The model code class ContactUs(models.Model): name = models.CharField(max_length=100) email = models.EmailField() telphone = PhoneNumberField() department = models.ManyToManyField(Service) message = models.TextField(max_length=1000) #the form code from django import forms from .models import ContactUs from phonenumber_field.formfields import PhoneNumberField from phonenumber_field.widgets import PhoneNumberPrefixWidget class ContactUsForm(forms.ModelForm): telephone = PhoneNumberField( widget = PhoneNumberPrefixWidget(initial='IN') ) class Meta: model = ContactUs fields = "__all__" -
Django Apache setup - forbidden Error 403
Since it did not work on the first time, I created a fresh new venv for my django project. my folder structure looks like this: btw I used the Django/Apache Setup guide from digitalOcean (https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-ubuntu-16-04) /home/pi/myproject/myprojectenv (this is where my env is located) /home/pi/myproject/myprojectenv/myproject/myproject (this is where the settings.py is located) I added this to the settings.py file (I use a pi, I only serve locally) ALLOWED_HOSTS = ['localhost', '127.0.0.1'] and at the bottom STATIC_ROOT = os.path.join(BASE_DIR, 'static/') my /etc/apache2/sites-available/000-default.conf looks like this: <VirtualHost *:80> #for django Alias /static /home/pi/myproject/myprojectenv/myproject <Directory /home/pi/myproject/myprojectenv/myproject/static> Require all granted </Directory> <Directory /home/pi/myproject/myprojectenv/myproject> <Files wsgi.py> Require all granted </Files> </Directory> WSGIDaemonProcess myproject python-home=/home/pi/myproject/myprojectenv python-path=/home/pi/myproject WSGIProcessGroup myproject WSGIScriptAlias / /home/pi/myproject/myprojectenv/myproject/myproject/wsgi.py ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> when I go to /static in the browser I get a http 403 forbidden Error. What am I doing wrong? -
how to check if input for barcode is valid using django?
I made an app to generate barcodes using python-barcode library (Python)(django framework) and there's two fields 1 - to let the user input the number that will used for generate the barcode 2 - options to let the user select which type of barcode he wants for now everything work fine it's generating the barcodes but some of the barcodes have its specific types of inputs like 12 digits or 8 digits and so on so how to check the inputs if its valid for that type of barcode or not?, then show error messages if it's wrong, or succes message if it generated fine I know I can use messages form django itself but how I can implement it with checking function? for views.py from sre_constants import SUCCESS from django.http import HttpResponse from django.shortcuts import redirect, render import barcode from barcode.writer import ImageWriter import tempfile from django.contrib import messages def index(request): context = {'barcode_types':barcode.PROVIDED_BARCODES} return render(request, 'index.html',context) def generate_barcode(request): inputs = request.POST['inputs'] types = request.POST['types'] barcode_class = barcode.get_barcode_class(types) file = tempfile.NamedTemporaryFile() code = barcode_class(inputs,writer=ImageWriter()) file_path = code.save(file.name) response = HttpResponse(open(file_path,'rb').read(), headers={'Content-Type': 'image/png','Content-Disposition': 'attachment; filename="'+inputs+'.png"'}) return response -
Django API feed linking to 'URL' instead of name
I am currently feeding an API to my django web page and a key value inside the first API contains a URL to another API My goal is to get the key: name under my second API - 'speciality' and not the url itself. html <div class="container-fluid p-2 bg-primary text-white text-center"> <h1>Users</h1> <a style="background: black;" href="http://localhost:8000/api/">Check out our API here</a> </div> <div class="container mt-5"> <table class="table"> <thead> <tr> <th>Id</th> <th>Name</th> <th>Lastname</th> <th>Email</th> <th>Hiring Date</th> <th>Phone</th> <th>Job</th> <th>Speciality</th> <th>Salary</th> </tr> </thead> <tbody> {% for user in users %} <tr> <td>{{ user.id }}</td> <td>{{ user.name }}</td> <td>{{ user.last_name }}</td> <td>{{ user.email }}</td> <td>{{ user.hire_date }}</td> <td>{{ user.phone_number }}</td> <td>{{ user.job }}</td> <td>{{ user.speciality }}</td> <td>{{ user.salary }}</td> </tr> {% endfor %} views.py def home(request): response = requests.get('http://127.0.0.1:8000/api/workers/') worker = response.json() return render(request, "home.html", {'users': worker}) -
Django RestFramework api error ImproperlyConfigured at /api/ using HyperlinkedModelSerializer
hi friends I'm learning Django-Rest-framework, i try t build one small API but i'm Facing Some Error i tried to solve but i can't so kindly help to fix this Error i mention below code and error you can able to see here Error ImproperlyConfigured at /api/stream_list/ Could not resolve URL for hyperlinked relationship using view name "steamplatform-detail". You may have failed to include the related model in your API, or incorrectly configured the `lookup_field` attribute on this field. This is views.py i just create basic view code from rest_framework.decorators import api_view,APIView from rest_framework.response import Response from watchlist.models import Watchlist,SteamPlatform from watchlist.serializers import WatchlistSerializers, SteamPlatformSerializers # Create your views here. class Movie_list(APIView): def get(self,request): Watchlists = Watchlist.objects.all() serializer = WatchlistSerializers(Watchlists,many=True) return Response(serializer.data) def post(self,request): serializer = WatchlistSerializers(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) else: return Response(serializer.errors) class Movie_details(APIView): def get(self,request, pk): try: movie = Watchlist.objects.get(pk=pk) serializers = WatchlistSerializers(movie) return Response(serializers.data) except Exception as e: data ={ "statuscode":401, "message":e } return Response(data) def put(self,request,pk): movie = Watchlist.objects.get(pk=pk) serializer = WatchlistSerializers(movie, data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data) else: return Response(serializer.errors) def delete(self,request,pk): movie = Watchlist.objects.get(pk=pk) movie.delete() return Response() class Steam_list(APIView): def get(self,request): Steams = SteamPlatform.objects.all() serializer = SteamPlatformSerializers(Steams, many=True, context={'request': None}) return Response(serializer.data) … -
Django REST multiple permission class not working
I have two permission class. IsAuthorGroup will check if the user belongs from the author group and IsOwnerOrReadOnly will restrict the user to performing post and delete if he is not the object's owner. But the problem is anyone from IsAuthorGroup performing post and delete request event he isn't own of the object. How to restrict anyone from IsAuthorGroup performing post and delete request if he isn't owner of the object? here is my code: class IsAuthorGroup(permissions.BasePermission): def has_permission(self, request, view): if request.user and request.user.groups.filter(name='AuthorGroup'): return True return False class IsOwnerOrReadOnly(permissions.BasePermission): def has_object_permission(self, request, view, obj): if request.method in permissions.SAFE_METHODS: return True # Write permissions are only allowed to the owner of the blog. return obj.author == request.user or request.user.is_superuser class BlogViewSet(viewsets.ModelViewSet): queryset = Blog.objects.all() serializer_class = BlogSerializer pagination_class = BlogPagination lookup_field = 'blog_slug' permission_classes = [IsOwnerOrReadOnly & IsAuthorGroup]