1from typing import Any, Callable, Dict, List, Optional, Type
2
3from django import http
4
5class ContextMixin:
6    def get_context_data(self, **kwargs: Any) -> Dict[str, Any]: ...
7
8class View:
9    http_method_names: List[str] = ...
10    request: http.HttpRequest = ...
11    args: Any = ...
12    kwargs: Any = ...
13    def __init__(self, **kwargs: Any) -> None: ...
14    @classmethod
15    def as_view(cls: Any, **initkwargs: Any) -> Callable[..., http.HttpResponse]: ...
16    def setup(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> None: ...
17    def dispatch(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
18    def http_method_not_allowed(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
19    def options(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
20
21class TemplateResponseMixin:
22    template_name: str = ...
23    template_engine: Optional[str] = ...
24    response_class: Type[http.HttpResponse] = ...
25    content_type: Optional[str] = ...
26    request: http.HttpRequest = ...
27    def render_to_response(self, context: Dict[str, Any], **response_kwargs: Any) -> http.HttpResponse: ...
28    def get_template_names(self) -> List[str]: ...
29
30class TemplateView(TemplateResponseMixin, ContextMixin, View):
31    def get(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
32
33class RedirectView(View):
34    permanent: bool = ...
35    url: Optional[str] = ...
36    pattern_name: Optional[str] = ...
37    query_string: bool = ...
38    def get_redirect_url(self, *args: Any, **kwargs: Any) -> Optional[str]: ...
39    def get(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
40    def head(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
41    def post(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
42    def delete(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
43    def put(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
44    def patch(self, request: http.HttpRequest, *args: Any, **kwargs: Any) -> http.HttpResponse: ...
45