Using sessions key variables as a url argument

30 views
Skip to first unread message

Gavin Boyle

unread,
Mar 10, 2019, 10:57:43 AM3/10/19
to django...@googlegroups.com
Hi all, 

I am not sure if this is possible as I could find nothing online but would appreciate any alternative solution.
  • In my view I obtain a pk which is set as a session key 
  • I need to pass that session key variable into the url argument.
e.g. http://127.0.0.1:8000/club_home/<session key>/teams/

Code below, any other samples of code needed let me know

Thanks
Gav

Main Urls
urlpatterns = [
url('admin/', admin.site.urls),
url(r'^club_home/', include('clubkit.clubs.urls'), name='clubs'),
]
Urls.py
urlpatterns = [
path('', views.club_home, name='club_home'),
path('teams/', views.TeamInfo.as_view(), name='teams'),
path('pitches/', views.PitchInfo.as_view(), name='pitches'),
]
View.py:
def club_home(request, pk=None):
if pk:
request.session['pk'] = pk
club = ClubInfo.objects.filter(pk=pk)
club_posts = ClubPosts.objects.filter(club_id=club[0])
else:
club_pk = request.session.get('pk')
club = ClubInfo.objects.filter(pk=club_pk)
club_posts = ClubPosts.objects.filter(club_id=club[0])
args = {'club': club,
'club_posts': club_posts
}
return render(request, 'club_home_page.html', args)

Séanadh Ríomhphoist/

Email Disclaimer

Tá an ríomhphost seo agus aon chomhad a sheoltar leis faoi rún agus is lena úsáid ag an seolaí agus sin amháin é. Is féidir tuilleadh a léamh anseo. 

This e-mail and any files transmitted with it are confidential and are intended solely for use by the addressee. Read more here. 

Perchouli

unread,
Mar 11, 2019, 5:11:04 AM3/11/19
to django...@googlegroups.com
Not sure I understand about the "pass that session key variable into the URL argument". But if you want the URL (http://127.0.0.1:8000/club_home/<session key>/teams/) works, change this path:

urlpatterns = [
   path('<int:pk>/teams/', views.club_home, name='club_home'),
]


--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAHZR7Jfbaf91WFE47EaqqjNch3dqVd-_9%2BLd8FUAPcuNOBFhww%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Ranganath Kulkarni

unread,
Mar 11, 2019, 1:44:49 PM3/11/19
to Django users
You can define urlpatterns as below:

url(r'^club_home/$/teams/', include('clubkit.clubs.urls'), name='clubs'),

So that $ will match for any single value primary key.

GavinB841

unread,
Mar 13, 2019, 11:27:08 AM3/13/19
to Django users
Hi Alvaro/Ranganath,

Appreciate your feedback, I understand what you are recommending but I can seem to get it working. 

Please see the below hopefully it will make more sense:

View sample for team:

class TeamInfo(APIView):
renderer_classes = [TemplateHTMLRenderer]
template_name = 'teams.html'

def get(self, request):

club_pk = request.session.get('pk')
        form = TeamForm()
teams = Team.objects.filter(club_id=club_pk)
return Response({'form': form,
'teams': teams,
'club_pk': club_pk
})

Urls: 

urlpatterns = [
path('', views.club_home, name='club_home'),
    path('<int:pk>/', views.club_home, name='club_home_with_pk'),
path('<int:pk>/teams/', views.TeamInfo.as_view(), name='teams'),
]

In my nav bar in the template: 

<li><a class="nav-link" href="{% url 'clubs:teams' pk=club_pk %}">Team</a></li>

How can I pass that session key argument into this template? 

Thanks 

Gavin 

Perchouli

unread,
Mar 14, 2019, 9:30:29 AM3/14/19
to django...@googlegroups.com
Hi Gavin,

You passed pk from URL.
class TeamInfo(APIView):
#...
def get(self, request, pk): # Add pk to params
       club_pk = self.kwargs.get('pk') # get the pk
       #...
       return Response({
                        'club_pk': club_pk
                        })
Will pass the pk into this template.
<li><a class="nav-link" href="{% url 'teams' club_pk %}">Team</a></li>

BR,

Alvaro

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
Reply all
Reply to author
Forward
0 new messages