or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

admin.mdauth.mdcontrib.mddatabase-orm.mdforms.mdhttp.mdindex.mdmigrations.mdmypy-plugin.mdsignals.mdtemplates.mdtransactions.mdurls.mdviews.md

urls.mddocs/

0

# URL Routing

1

2

Django's URL routing system provides URL pattern matching, view resolution, reverse URL lookup, and URL configuration management for mapping URLs to view functions and classes.

3

4

## Core Imports

5

6

```python

7

# URL pattern functions

8

from django.urls import path, re_path, include

9

10

# URL utilities

11

from django.urls import reverse, reverse_lazy

12

13

# URL pattern classes

14

from django.urls.resolvers import URLPattern, URLResolver

15

16

# URL exceptions

17

from django.urls.exceptions import NoReverseMatch, Resolver404

18

19

# URL configuration

20

from django.conf.urls import handler404, handler500

21

```

22

23

## Capabilities

24

25

### URL Pattern Definition

26

27

Functions for defining URL patterns with path and regex syntax.

28

29

```python { .api }

30

def path(route: str, view, kwargs: dict = None, name: str = None) -> URLPattern:

31

"""

32

Define URL pattern with path syntax using angle brackets for parameters.

33

34

Args:

35

route (str): URL pattern with parameter syntax like 'articles/<int:year>/'

36

view: View function or class-based view

37

kwargs (dict, optional): Extra keyword arguments to pass to view

38

name (str, optional): Name for reverse URL lookup

39

40

Returns:

41

URLPattern: URL pattern object

42

"""

43

44

def re_path(route: str, view, kwargs: dict = None, name: str = None) -> URLPattern:

45

"""

46

Define URL pattern with regular expression syntax.

47

48

Args:

49

route (str): Regular expression pattern for URL matching

50

view: View function or class-based view

51

kwargs (dict, optional): Extra keyword arguments to pass to view

52

name (str, optional): Name for reverse URL lookup

53

54

Returns:

55

URLPattern: URL pattern object

56

"""

57

58

def include(arg, namespace: str = None) -> tuple:

59

"""

60

Include another URL configuration module or pattern list.

61

62

Args:

63

arg: Module path string, list of patterns, or (patterns, app_namespace) tuple

64

namespace (str, optional): Instance namespace for included URLs

65

66

Returns:

67

tuple: URL include configuration

68

"""

69

```

70

71

### URL Resolution and Reverse Lookup

72

73

Functions for resolving URLs to views and generating URLs from view names.

74

75

```python { .api }

76

def reverse(viewname: str, urlconf: str = None, args: tuple = None, kwargs: dict = None, current_app: str = None) -> str:

77

"""

78

Reverse lookup URL from view name and parameters.

79

80

Args:

81

viewname (str): View name or dotted path to view

82

urlconf (str, optional): URL configuration module to use

83

args (tuple, optional): Positional arguments for URL parameters

84

kwargs (dict, optional): Keyword arguments for URL parameters

85

current_app (str, optional): Current application namespace

86

87

Returns:

88

str: Resolved URL path

89

"""

90

91

def reverse_lazy(viewname: str, urlconf: str = None, args: tuple = None, kwargs: dict = None, current_app: str = None):

92

"""

93

Lazy reverse lookup for use in settings and class definitions.

94

95

Returns a lazy object that resolves to URL when evaluated.

96

"""

97

98

def resolve(path: str, urlconf: str = None) -> ResolverMatch:

99

"""

100

Resolve URL path to view function and parameters.

101

102

Args:

103

path (str): URL path to resolve

104

urlconf (str, optional): URL configuration module to use

105

106

Returns:

107

ResolverMatch: Resolution result with view, args, kwargs, and names

108

"""

109

```

110

111

### URL Pattern Classes

112

113

Core classes representing URL patterns and resolution results.

114

115

```python { .api }

116

class URLPattern:

117

"""Single URL pattern mapping route to view."""

118

def __init__(self, pattern, callback, default_args: dict = None, name: str = None): ...

119

120

def resolve(self, path: str) -> ResolverMatch: ...

121

def __repr__(self) -> str: ...

122

123

pattern: Any

124

callback: Any

125

default_args: dict

126

name: str

127

128

class URLResolver:

129

"""URL resolver for handling included URL configurations."""

130

def __init__(self, pattern, urlconf_name: str, default_kwargs: dict = None, app_name: str = None, namespace: str = None): ...

131

132

def resolve(self, path: str) -> ResolverMatch: ...

133

def reverse(self, lookup_view: str, *args, **kwargs) -> str: ...

134

def __repr__(self) -> str: ...

135

136

pattern: Any

137

urlconf_name: str

138

callback: Any

139

default_kwargs: dict

140

app_name: str

141

namespace: str

142

143

class ResolverMatch:

144

"""Result of URL resolution containing view and parameters."""

145

def __init__(self, func, args: tuple, kwargs: dict, url_name: str = None, app_names: list = None, namespaces: list = None, route: str = None): ...

146

147

func: Any # Resolved view function or class

148

args: tuple # Positional arguments from URL

149

kwargs: dict # Keyword arguments from URL

150

url_name: str # Name of matched URL pattern

151

view_name: str # Full dotted name of view

152

app_names: list # Application namespaces

153

namespaces: list # All namespaces

154

app_name: str # Current application namespace

155

namespace: str # Current namespace

156

route: str # Matched route pattern

157

```

158

159

### URL Configuration Management

160

161

Functions for managing URL configuration and caching.

162

163

```python { .api }

164

def get_resolver(urlconf: str = None):

165

"""

166

Get URL resolver for the given configuration.

167

168

Args:

169

urlconf (str, optional): URL configuration module path

170

171

Returns:

172

URLResolver: Main URL resolver instance

173

"""

174

175

def get_ns_resolver(ns_pattern: str, resolver, converters: dict):

176

"""Get namespace resolver for the given pattern."""

177

178

def get_callable(lookup_view):

179

"""

180

Convert string view name to callable view function.

181

182

Args:

183

lookup_view: String path or callable view

184

185

Returns:

186

callable: View function or class

187

"""

188

189

def get_mod_func(callback: str) -> tuple:

190

"""

191

Split callback string into module and function names.

192

193

Args:

194

callback (str): Dotted path to callback

195

196

Returns:

197

tuple: (module_name, function_name)

198

"""

199

200

def clear_url_caches() -> None:

201

"""Clear all URL resolver caches."""

202

203

def set_script_prefix(prefix: str) -> None:

204

"""Set script prefix for URL generation."""

205

206

def get_script_prefix() -> str:

207

"""Get current script prefix."""

208

209

def clear_script_prefix() -> None:

210

"""Clear script prefix."""

211

212

def set_urlconf(urlconf_name: str) -> None:

213

"""Set URL configuration for current thread."""

214

215

def get_urlconf(default: str = None) -> str:

216

"""Get URL configuration for current thread."""

217

```

218

219

### URL Validation and Utilities

220

221

Utility functions for URL validation and processing.

222

223

```python { .api }

224

def is_valid_path(path: str, urlconf: str = None) -> bool:

225

"""

226

Check if URL path is valid (can be resolved).

227

228

Args:

229

path (str): URL path to validate

230

urlconf (str, optional): URL configuration to use

231

232

Returns:

233

bool: True if path can be resolved

234

"""

235

236

def translate_url(url: str, lang_code: str) -> str:

237

"""

238

Translate URL to given language code.

239

240

Args:

241

url (str): URL to translate

242

lang_code (str): Target language code

243

244

Returns:

245

str: Translated URL

246

"""

247

```

248

249

### URL Converters

250

251

Path converters for extracting typed parameters from URLs.

252

253

```python { .api }

254

def register_converter(converter_class: type, type_name: str) -> None:

255

"""

256

Register custom URL parameter converter.

257

258

Args:

259

converter_class (type): Converter class with to_python and to_url methods

260

type_name (str): Name to use in URL patterns

261

"""

262

263

class IntConverter:

264

"""Converter for integer URL parameters."""

265

regex: str = '[0-9]+'

266

267

def to_python(self, value: str) -> int: ...

268

def to_url(self, value: int) -> str: ...

269

270

class StringConverter:

271

"""Converter for string URL parameters."""

272

regex: str = '[^/]+'

273

274

def to_python(self, value: str) -> str: ...

275

def to_url(self, value: str) -> str: ...

276

277

class UUIDConverter:

278

"""Converter for UUID URL parameters."""

279

regex: str = '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}'

280

281

def to_python(self, value: str): ...

282

def to_url(self, value) -> str: ...

283

284

class SlugConverter:

285

"""Converter for slug URL parameters."""

286

regex: str = '[-a-zA-Z0-9_]+'

287

288

def to_python(self, value: str) -> str: ...

289

def to_url(self, value: str) -> str: ...

290

291

class PathConverter:

292

"""Converter for path URL parameters (including slashes)."""

293

regex: str = '.+'

294

295

def to_python(self, value: str) -> str: ...

296

def to_url(self, value: str) -> str: ...

297

```

298

299

### URL Exceptions

300

301

Exception classes for URL resolution and reverse lookup errors.

302

303

```python { .api }

304

class Resolver404(Exception):

305

"""

306

Raised when URL resolution fails.

307

308

Indicates that no URL pattern matched the requested path.

309

"""

310

pass

311

312

class NoReverseMatch(Exception):

313

"""

314

Raised when reverse URL lookup fails.

315

316

Indicates that no URL pattern matches the given view name and parameters.

317

"""

318

pass

319

```

320

321

### URL Pattern Matching

322

323

Internal classes for URL pattern compilation and matching.

324

325

```python { .api }

326

class LocalePrefixPattern:

327

"""Pattern for matching locale prefixes in internationalized URLs."""

328

def __init__(self, prefix_default_language: bool = True): ...

329

330

def match(self, path: str) -> tuple: ...

331

def check(self) -> list: ...

332

def describe(self) -> str: ...

333

334

converters: dict

335

336

class RoutePattern:

337

"""Pattern for path-style URL routing with parameter extraction."""

338

def __init__(self, route: str, name: str = None, is_endpoint: bool = False): ...

339

340

def match(self, path: str) -> tuple: ...

341

def check(self) -> list: ...

342

def describe(self) -> str: ...

343

344

regex: Any

345

converters: dict

346

347

class RegexPattern:

348

"""Pattern for regex-style URL routing with group capture."""

349

def __init__(self, regex: str, name: str = None, is_endpoint: bool = False): ...

350

351

def match(self, path: str) -> tuple: ...

352

def check(self) -> list: ...

353

def describe(self) -> str: ...

354

355

regex: Any

356

```

357

358

### Internationalization Support

359

360

URL internationalization utilities for multi-language sites.

361

362

```python { .api }

363

def i18n_patterns(*urls, prefix_default_language: bool = True):

364

"""

365

Add language prefix to URL patterns for internationalization.

366

367

Args:

368

urls: URL patterns to internationalize

369

prefix_default_language (bool): Whether to prefix default language

370

371

Returns:

372

list: Internationalized URL patterns

373

"""

374

375

def is_language_prefix_patterns_used(urlconf: str = None) -> bool:

376

"""Check if language prefix patterns are used in URL configuration."""

377

```

378

379

### URL Types

380

381

Type aliases for URL pattern collections.

382

383

```python { .api }

384

_AnyURL = URLPattern | URLResolver # Union type for URL patterns and resolvers

385

```