Frnk
Frnk

Reputation: 137

Got an unexpected keyword argument 'my_id' (Dynamic URL Routing)

django 3.2.2

urls.py

from django.contrib import admin
from django.urls import path
from pages.views import home_view, contact_view, about_view
from products.views import product_detail_view, product_create_view, render_initial_data, dynamic_lookup_view

urlpatterns = [
    path('products/<int:my_id>/', dynamic_lookup_view, name='product'),
    path('', home_view, name='home'),
    path('about/', about_view),
    path('contact/', contact_view),
    path('create/', product_create_view),
    path('initial/', render_initial_data),
    path('product/', product_detail_view),
    path('admin/', admin.site.urls),
]

views.py

from django.shortcuts import render, get_object_or_404
from .forms import ProductForm, RawProducForm
from .models import Product
# Create your views here.

def dynamic_lookup_view(request, my_id):
    obj = Product.objects.get(id=my_id)
    context = {
        "object": obj
    }
    return render(request, "products/product_detail.html", context)

I want to see the products with the following link:

http://127.0.0.1:8000/products/2/

this returns me:

Environment:

Request Method: GET
Request URL: http://127.0.0.1:8000/products/1/

Django Version: 3.2.2
Python Version: 3.8.5
Installed Applications:
['django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'pages',
 'products']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware']

Traceback (most recent call last): File "/home/frank/Dev/cilsa/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner response = get_response(request) File "/home/frank/Dev/cilsa/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs)

Exception Type: TypeError at /products/1/

Exception Value: dynamic_lookup_view() got an unexpected keyword argument 'my_id'

Upvotes: 0

Views: 708

Answers (1)

Trent
Trent

Reputation: 3103

You've defined dynamic_lookup_view twice :) It picks up the last definition which does not have "my_id" as a parameter. See line 26 of products/views.py.

I added a pull request to your repo https://github.com/frnkdmn/cilsa/pull/1

Upvotes: 1

Related Questions