Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pass date and id through url in django

Tags:

python

django

I am trying to pass date and id through url, but getting an error, I have passed just id before and I usually do it like this.

path('user_payment_menu/<int:pk>/',user_payment_menu, name='user_payment_menu'),

but now I want date to pass after int:pk/ but when I add date after a slash I am getting an error.

like image 285
Music Cause Avatar asked Oct 25 '25 03:10

Music Cause


1 Answers

Probably the easiest way to define a date is with a custom path converter. You can implement this with:

# app_name/converters.py

class DateConverter:
    regex = '\d{4}-\d{1,2}-\d{1,2}'
    format = '%Y-%m-%d'

    def to_python(self, value):
        return datetime.strptime(value, self.format).date()

    def to_url(self, value):
        return value.strftime(self.format)

Then you can register the format and use the <date:…> path converter:

# app_name/urls.py

from django.urls import path, register_converter
from app_name.converters import DateConverter
from app_name.views import user_payment_menu

register_converter(DateConverter, 'date')

urlpatterns = [
    path('user_payment_menu/<int:pk>/<date:mydate>/',user_payment_menu, name='user_payment_menu'),

then in the view you define an extra attribute that will contain the date as a date object:

# app_name/views.py

def user_payment_menu(request, pk, mydate):
    # …

You can use a date object when generating a URL, for example with:

{% url 'user_payment_menu' pk=somepk mydate=somedate %}
like image 85
Willem Van Onsem Avatar answered Oct 27 '25 15:10

Willem Van Onsem



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!