|
1 | | -from plain.http import ( |
2 | | - ResponsePermanentRedirect, |
3 | | - ResponseRedirect, |
4 | | -) |
| 1 | +from plain.http import ResponseRedirect |
5 | 2 | from plain.urls import reverse |
6 | 3 |
|
7 | 4 | from .base import View |
|
10 | 7 | class RedirectView(View): |
11 | 8 | """Provide a redirect on any GET request.""" |
12 | 9 |
|
13 | | - permanent = False |
| 10 | + status_code = 302 |
14 | 11 | url: str | None = None |
15 | 12 | url_name: str | None = None |
16 | 13 | preserve_query_params = False |
17 | 14 |
|
18 | 15 | def __init__( |
19 | | - self, url=None, permanent=None, url_name=None, preserve_query_params=None |
| 16 | + self, url=None, status_code=None, url_name=None, preserve_query_params=None |
20 | 17 | ): |
21 | | - # Allow attributes to be set in RedirectView.as_view(url="...", permanent=True, etc.) |
| 18 | + # Allow attributes to be set in RedirectView.as_view(url="...", status_code=301, etc.) |
22 | 19 | self.url = url or self.url |
23 | | - self.permanent = permanent if permanent is not None else self.permanent |
| 20 | + self.status_code = status_code if status_code is not None else self.status_code |
24 | 21 | self.url_name = url_name or self.url_name |
25 | 22 | self.preserve_query_params = ( |
26 | 23 | preserve_query_params |
@@ -48,10 +45,7 @@ def get_redirect_url(self): |
48 | 45 |
|
49 | 46 | def get(self): |
50 | 47 | url = self.get_redirect_url() |
51 | | - if self.permanent: |
52 | | - return ResponsePermanentRedirect(url) |
53 | | - else: |
54 | | - return ResponseRedirect(url) |
| 48 | + return ResponseRedirect(url, status_code=self.status_code) |
55 | 49 |
|
56 | 50 | def head(self): |
57 | 51 | return self.get() |
|
0 commit comments