77👍
Write a custom context processor. e.g.
def get_current_path(request):
return {
'current_path': request.get_full_path()
}
add a path to that function in your TEMPLATE_CONTEXT_PROCESSORS
settings variable, and use it in your template like so:
{{ current_path }}
If you want to have the full request
object in every request, you can use the built-in django.core.context_processors.request
context processor, and then use {{ request.get_full_path }}
in your template.
See:
27👍
Use Django’s build in context processor to get the request in template context. In settings add request
processor to TEMPLATE_CONTEXT_PROCESSORS
TEMPLATE_CONTEXT_PROCESSORS = (
# Put your context processors here
'django.core.context_processors.request',
)
And in template use:
{{ request.get_full_path }}
This way you do not need to write any new code by yourself.
- [Django]-How to access outermost forloop.counter with nested for loops in Django templates?
- [Django]-Unsupported operand type(s) for *: 'float' and 'Decimal'
- [Django]-How to group by AND aggregate with Django
9👍
In a file context_processors.py (or the like):
def myurl( request ):
return { 'myurlx': request.get_full_path() }
In settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
...
wherever_it_is.context_processors.myurl,
...
In your template.html:
myurl={{myurlx}}
- [Django]-Django {% if forloop.first %} question
- [Django]-What does on_delete do on Django models?
- [Django]-Good open source django project for learning
6👍
If we are acessing the following URL: http://127.0.0.1:8000/home/?q=test
then
request.path = '/home/'
request.get_full_path() = '/home/?q=test'
request.build_absolute_uri() = 'http://127.0.0.1:8000/home/?q=test'
- [Django]-Migrating Django fixtures?
- [Django]-Resize fields in Django Admin
- [Django]-DRF: custom ordering on related serializers
2👍
Django has a lot of built-in stuff, but if you don’t explicit what do you want to use, it won’t be used.
So, in MTV schema (Model, Template, View) the view receives a request and uses a template render to generate a response, passing on it a dictionary or all local variables (using the locals() function) of this view. Knowing this, we can insert the current url that came from the response, like this:
views.py:
from django.shortcuts import render
def page(request):
currentUrl = request.get_full_path()
return render(request, 'app/page.html', locals())
Then, in the template ‘app/page.html’ you just have to do the following to display the currentUrl variable that we just created and passed through via locals():
app/template/page.html:
{{ currentUrl }}
- [Django]-What is the advantage of Class-Based views?
- [Django]-Foreign Key Django Model
- [Django]-Python 3 list(dictionary.keys()) raises error. What am I doing wrong?
2👍
In addtition to sdolan’s answer:
if you are using I18N and would like to pass next
value to /i18n/setlang/
to change the language of the current page, then you will need to strip off current language code from the full path either. Something like:
full_path = request.get_full_path()
current_path = full_path[full_path.index('/', 1):]
This assumes that every path has format /LANG_CODE/any/other/stuff/with/?param='yay'
and simply kicks off LANG_CODE
whatever it is (e.g., /en/
will result into /
).
- [Django]-Why does django run everything twice?
- [Django]-Troubleshooting Site Slowness on a Nginx + Gunicorn + Django Stack
- [Django]-How to get the current url namespace using Django?
2👍
You can see if your url differs from the others.
{% if 'foo/bar/' in request.get_full_path %}
- [Django]-Django, creating a custom 500/404 error page
- [Django]-OneToOneField() vs ForeignKey() in Django
- [Django]-How do you get PyPy, Django and PostgreSQL to work together?