ob-vaults/Super_Vault/200_programming/python/django/urls and views.md
2024-09-12 17:54:01 +03:30

116 lines
2.3 KiB
Markdown

status: #doc
Tags: #python/django
links:
Date: 2024-06-22
___
# views
## making simple functional view
- in my_app folder inside views.py add
```python
# index() ==> Hello World
def index(request):
return HttpResponse("Hello World")
```
- and import `HttpResponse` form `django.shortcuts` with adding it to first line like below
```python
from django.shortcuts import render,HttpResponse
```
> [!INFO] what it do?
> we get client request and then we response with text hello_world, note that we use `HttpResponse` so we can use text to answer client and request is what we get from client
# urls
## add simple url
- first import your view like this
```python
from my_app.views import index
```
- go to config or your project folder inside of url.py file route to home like this
```python
# my_site.com/ ==> index()
urlpatterns = [
path('',index),
]
```
> [!INFO]
> urls are used to route requests to views
> for checking witch view we call we use urlpatterns list
>
>[!info]
> its better to add / to end of path , example: about or about/ both fire same view
# dynamic routing
when we want to load pages base on variables we send variables from urls ==> views/functions and it will produce our page base on variables
- Example :
we send name of person in url and it say hello to them
for this first we want to get person name from url
## send variable from urls
- first we send variable to view we want (we can first make url or view it doesn't matter)
```python
from my_app.views import hello
# path ('adreess_you_want/<type_of_variable:variable>/',name_of_view)
# my_site.com/hellome/first_name ==> hello(first_name)
urlpatterns = [
path('hellome/<str:first_name>',hello),
]
```
## receive variable in views
inside views.py we add this
```python
def hello(request,first_name):
return HttpResponse(f"Hello {first_name}")
```
# using templates
inside views.py we use render function like this
- app level template
```python
def hello(request):
return render(request,"my_project/home.html")
```
- inline variables
```python
def hello(request):
return render(request,"my_project/home.html",{'my_var':'bar' })
```
- context
```python
def hello(request):
context:{
movies:["avatar,matrix,spider-man"]
}
return render(request,"my_project/home.html",context)
```
- url variables ???
---
# References