Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
.. image:: https://travis-ci.org/andrewgodwin/urlman.svg?branch=master :target: https://travis-ci.org/andrewgodwin/urlman :alt: Test Status
.. image:: https://codecov.io/gh/andrewgodwin/urlman/branch/master/graph/badge.svg :target: https://codecov.io/gh/andrewgodwin/urlman :alt: Test Coverage Status
A nicer way to do URLs for Django models.
Replaces things like get_absolute_url
with a .urls
attribute that
can reference other URLs and build sensible trees of things, and can
then be accessed using instance.urls.name
.
This is so you can have URLs on your model instances directly (rather than reversing
through the url lookup functions, which is not only slow but often hard to supply
arguments to). You can just throw {{ instance.urls.view }}
into a template to get
a link.
It also lets you use Python string formatting syntax to place arguments into URLs from the model instance itself or from other URLs in the same set.
Example:
.. code-block:: python
import urlman
class Group(models.Model):
...
class urls(urlman.Urls):
view = "/{self.slug}/"
users = "{view}users/"
admin = "{view}admin/"
def my_view(request):
group = ...
return redirect(group.urls.view)
It's suggested that you use "view" as the equivalent name for
get_absolute_url
, and have a function like this on your model:
.. code-block:: python
def get_absolute_url(self):
return self.urls.view
To build a full URL use the full
method like this:
.. code-block:: python
def my_view(request):
group = ...
return redirect(group.urls.admin.full(scheme='https'))
You can implement the get_scheme(url)
and get_hostname(url)
methods on your
Url
class to change your default theme and hostname from the urlman defaults
of 'http'
and 'localhost'
, respectively.
If you use Django REST Framework, you can use urlman.UrlManField
to provide
an object with a set of URLs. It is used like this (only the urls
parameter
is required):
.. code-block:: python
from urlman.serializers import UrlManField
class MySerializer(ModelSerializer): urls = UrlManField(urls=['view', 'edit'], attribute='urls', full=True)
FAQs
Django URL pattern helpers
We found that urlman demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.