# Getting started - 設定 replit 上的 django
>2023/4/1 林冠曄
# Abstract
最近在思考如何在教學最簡單部署 django 而且又可以讓大家的 django 專案給別人看到。於是開始研究 replit 上的 django。
設定上很簡單,而且馬上有個人專屬網址可以用,你做的作品可以給別人玩,不過免費版的速度很慢,但以練習來講足夠用。
如果做完有興趣,可以考慮自建或找伺服器來架設你的專案。
以下簡單講解如何在 replit 設定 django。
# Create project and Setting
- 到 [Replit](https://replit.com/~) 建立一個專案,選擇 Django。

- 點擊左方 `README.MD` 會告訴你如何設定 `SECRET_KEY`。

- 到 `Shell` 的地方依序把指令打上去,並複製結果
```shell=
python
import secrets
secrets.token_urlsafe(32)
```

- 左方工具選 `SECRET_KEY`,將結果貼進去。

- 現在按下 `RUN` 就可以看到你的網站初始化完成囉!

- 你可以把網址給別人,他就可以看到你的網站了。
- 右下角是網站的狀態,包含連線、錯誤訊息,都會顯示在這邊。
# Startapp and HttpResponse
現在我們要來開始第一個 `app`,在 Django 的概念中,我們把同類型功能的東西寫在一起,當作一個 `app`。若有需要也可以把特定 `app` 拿去別的專案使用,很彈性。
## Startapp
在 `Shell` 的地方打
```shell=
python manage.py startapp hello
```
其中 hello 是我們範例的 app 名稱,你可打自己喜歡的。
完成後,你會看到檔案多了一個 hello 的資料夾。

```
admin.py 用來設定後台看哪些資料的
models.py 用來設定資料庫
tests.py 用來寫測試
views.py 網頁跟後台的溝通邏輯
```
這邊我們進入的 `view.py` 來進行一個簡單的範例。
## HttpResponse
`hello/view.py`
```python=
from django.shortcuts import render
from django.http import HttpResponse
def hello(request):
result = "<h1>Hello World!</h1>"
return HttpResponse(result)
```
- 在第2行匯入 `HttpResponse`
- 第4行開始定義一個函數,回傳 `Hello World!`
- 當有人瀏覽到這個地方的時候,他就會看到一個大標題寫 Hello World!
接著我們要來設定「路徑」,使用者輸入哪個網址的時候會出現這個畫面。
## 路徑設定
### django_project/urls.py
在 `django_project` 的資料夾找 `urls.py`,
並改成如下:
```python=
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('hello.urls')),
]
```
- 第2行新增 `include`
- 第6行新增 `path('', include('hello.urls')),`
進行這個設定之後,網址就會去找 `hello`裡面 `urls`的設定了。
### hello/urls.py
點`hello`資料夾,按 `add file`命名為 `urls.py`
將內容新增如下:
```python=
from django.urls import path
from . import views
urlpatterns = [
path('', views.hello, name='hello'),
]
```
- 第2行意思是將 hello 裡的 views 定義的東西都抓進來。
- 這個地方我們設定網址空空的時候跑到我們剛剛定義的 `hello`裡。
### django_proect/settings.py
到 `django_project` 找到 `settings.py`,大約在37行的位置有一個`INSTALLED_APPS` 將內容新增 `'hello',`
```python=
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'hello',
]
```
這個意思是我們「安裝」了剛剛建立的 `hello` 這個 app。
此時重新整理,妳應該就會看到網頁從原本的預設畫面,變成你自己定義的大標題 Hello World!了。
### Idea
你可以這樣想,現在我們建立一間學校,學校就是你的專案。而學校裡面有好多棟大樓,每棟大樓有各自的功能,這些大樓就是app。
我們剛剛建立了一棟大樓名作 `hello`,並在裡面建立一間教室叫做 `hello`,這間教室黑板上有一個大標題 `Hello World!`。
建立好教室之後,我們要告訴別人怎麼走到這間教室,
於是在學校的公布欄放了一張地圖,告訴他 `hello` 這棟大樓怎麼走。這個就是 `django_project/urls.py` 的功能。
而我們走到 `hello` 這棟大樓後,接著要去剛剛那間教室,於是我們在這棟大樓也放一個路線圖,上面告訴我們怎麼到這間教室。這個就是 `hello/urls.py`。
透過這個方式,我們可以方便管理不同大樓,以及內部有哪些教室,呈現什麼樣的資訊。
# Wrapping up
- 你現在可以用 replit 建立 django 專案並執行
- 你現在可以新增 app
- 你現在可以寫一個簡單的畫面
- 你現在可以設定路徑