Django global query strings allows adding query strings (query params) site-wide
Project description
Django global query strings
Django global query strings
allows adding query strings (query params) globally.
The app looks for all the <a>
tags in a html content thanks to BeautifulSoup.
There are two ways of using the app. Each way can be used separately or conjointly:
- Using the middleware
GlobalQueryStringsMiddleware
- Using the utility function
add_query_strings_to_links
Installation
Install with pip:
pip install django-global-query-strings
Setup
In order to make django-global-query-strings
works, you'll need to follow the steps below:
Settings
First, you need to add the app and the middleware to your settings. The middleware is optional depending on your usage:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.sessions',
'django.contrib.messages',
'global_query_strings',
...
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'global_query_strings.middleware.GlobalQueryStringsMiddleware',
...
)
Settings
Here is the list of all the settings with their default values:
GLOBAL_QUERY_STRINGS_IGNORE_URLS = []
GLOBAL_QUERY_STRINGS_IGNORE_RELATIVE_PATHS = False
GLOBAL_QUERY_STRINGS_PARAMS = {}
GLOBAL_QUERY_STRINGS_EXCLUDE_PATHS_LIST = []
GLOBAL_QUERY_STRINGS_IGNORE_URLS
GLOBAL_QUERY_STRINGS_IGNORE_URLS
takes a list of domain name or urls e.g.: ["example.com", "https://www.foo.org"]
. When the html parser finds those values, the global query strings won't be added to the urls.
GLOBAL_QUERY_STRINGS_IGNORE_RELATIVE_PATHS
GLOBAL_QUERY_STRINGS_IGNORE_RELATIVE_PATHS
is a boolean. When set to True
, the parser will ignore relative paths.
GLOBAL_QUERY_STRINGS_PARAMS
GLOBAL_QUERY_STRINGS_PARAMS
takes a dictionary of global query strings to set e.g.: {"foo": "bar", "lorem": "ipsum"}
. The query strings found in GLOBAL_QUERY_STRINGS_PARAMS
would be replaced / added to the urls found by the parser.
GLOBAL_QUERY_STRINGS_EXCLUDE_PATHS_LIST
GLOBAL_QUERY_STRINGS_EXCLUDE_PATHS_LIST
is a list of paths to exclude that takes place in the middleware only.
All the paths that starts with any elements of the list will bypass the middleware. e.g.: ["/admin"]
Usage
Here is an example of input / output with the following settings:
GLOBAL_QUERY_STRINGS_IGNORE_URLS = ["example.com", "https://www.foo.org"]
GLOBAL_QUERY_STRINGS_IGNORE_RELATIVE_PATHS = True
GLOBAL_QUERY_STRINGS_PARAMS = {"foo": "bar", "lorem": "ipsum"}
Input:
<html lang="en">
<body>
<a href="https://www.foo.org">Lorem Ipsum</a> is simply dummy text of the printing and typesetting industry.
<a href="https://foo.org">Lorem Ipsum</a> has been the industry's standard dummy text ever since the 1500s,
when an unknown printer took a galley of type and scrambled it to make a type specimen book.
It has survived not only <a href="https://www.bar.com">five centuries</a>, but also the leap into electronic
typesetting, <a href="/lorem/ipsum">remaining essentially</a> unchanged.
It was popularised in the 1960s with the release of <a href="https://www.bar.com?example=true">Letraset sheets</a>
containing Lorem Ipsum passages, and more recently with desktop <a href="https://www.foo.org?foo=ipsum">publishing software</a>
like Aldus PageMaker including versions of Lorem Ipsum.
</body>
</html>
Output:
<html lang="en">
<body>
<a href="https://www.foo.org">Lorem Ipsum</a> is simply dummy text of the printing and typesetting industry.
<a href="https://foo.org?foo=bar&lorem=ipsum">Lorem Ipsum</a> has been the industry's standard dummy text ever since the 1500s,
when an unknown printer took a galley of type and scrambled it to make a type specimen book.
It has survived not only <a href="https://www.bar.com?foo=bar&lorem=ipsum">five centuries</a>, but also the leap into electronic
typesetting, <a href="/lorem/ipsum">remaining essentially</a> unchanged.
It was popularised in the 1960s with the release of <a href="https://www.bar.com?example=true&foo=bar&lorem=ipsum">Letraset sheets</a>
containing Lorem Ipsum passages, and more recently with desktop <a href="https://www.foo.org?foo=bar&lorem=ipsum">publishing software</a>
like Aldus PageMaker including versions of Lorem Ipsum.
</body>
</html>
Tests
Testing is managed by pytest
. Required package for testing can be installed with:
pip install -r test_requirements.txt
To run testing locally:
pytest
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file django-global-query-strings-0.4.0.tar.gz
.
File metadata
- Download URL: django-global-query-strings-0.4.0.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5a8d56fbb2bfe0e8048291754319b61b8552eef07ca1362ef70fae3337686215 |
|
MD5 | cbeb8d46e387412d535b441d623db43e |
|
BLAKE2b-256 | fd4a17f9d266a50fbadd50a1391bb00f7d8ba8931b6afe110413500afe97f202 |
File details
Details for the file django_global_query_strings-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: django_global_query_strings-0.4.0-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.9.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 46efdda73d42f94dc2f2946188f27640173169dad3c0035d700925c0ad3e8146 |
|
MD5 | 81da0036ae1457e753e0762170763b53 |
|
BLAKE2b-256 | 6f7850b9a212399a0a450ba02438e26ff5a7ad3f9ce95b88033f843d29ec459c |