django(django學習) 兩張表建立 插入資料

醒了不起的蓋茨比發表於2020-12-04
 
pycharm中直接建立django專案

django(django學習) 兩張表建立 插入資料輸入建立專案名(如first_django)

 

 

 在此輸入應用名(如g_tu)

 

此為專案總目錄

django(django學習) 兩張表建立 插入資料

 

 

 

 

 

 

 

將first_django中settings.py中第58行修改為以下程式碼
'DIRS': [os.path.join(BASE_DIR , 'templates')]
在此程式碼中搜尋DATABASES將程式碼修改為以下

連線MySQL資料庫

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'stu',  #建立的表名
        'HOST':'127.0.0.1',
        'PORT':3306,
        'USER':'root',  #使用者名稱
        'PASSWORD':'123456'  #密碼
    }
}

 

在first_django中urls中輸入以下程式碼
path('',views.index),   #主頁為views中的index函式

 

在models.py中建立兩個表
 
class Grade(models.Model):
    g_name = models.CharField(max_length=200)
class Student(models.Model):
    s_name = models.CharField(max_length=200)
    age = models.CharField(max_length=200)
    sex = models.CharField(max_length=200)
    emali = models.CharField(max_length=200)
    password = models.CharField(max_length=200)
    g = models.ForeignKey(Grade, on_delete=models.CASCADE)
之後在開啟pycharm中開啟cmd輸入
python manage.py makemigrations   #建立sql語句
python manage.py sqlmigrate 0001  #檢視sql語句
python manage.py migrate          #執行sql語句
在g_stu中views中引入
from g_stu.models import Grade,Student
輸入函式index
def index(request):
    g = Grade(g_name="一班")   #增加資料
    g.save()                   #提交
    return render(request,"index.html")  #返回網頁index
在templates中建立index.html檔案
 
在first_django中urls中輸入以下程式碼
path('show/',views.show),  #跳轉到為views中的show函式
path('<int:id>',views.student,name="student")
      #傳值 型別為int  為view中student函式
在g_stu中views中輸入函式show展示資料
def show(request):
    g_all = Grade.objects.all()  #查詢Grade表所有資料
    return render(request, "show.html",{
        "grade":g_all     #注意傳回值為字典
    })  #返回show.html頁面 傳回查詢的所有資料

def student(request,id):  #接受id
    gr = Grade.objects.filter(id=id).first()  #條件查詢 查詢符合條件的第一條資料
    s = Student(s_name="張三",age="20",sex="",emali="111@qq.com",password="111",g=gr)  #插入資料外來鍵等於查詢資料的主鍵
   s.save()
   return render(request,"stu.html",{"s":s})   #返回stu.html頁面 傳回插入的資料s     
在templates中建立show.html檔案
{% for i in grade %}   #迴圈傳回字典的值
    <a href="{% url 'student' i.id %}">{{ i.g_name }}</a>  #展示每條資料 
    #{% url 'student' i.id %} 此句為給student檢視傳回此條資料的id值
{% endfor %}  #結束迴圈
在templates中建立stu.html檔案
{{ s.s_name }}  #展示資料
{{ s.age }}
{{ s.sex }}
{{ s.emali }}
{{ s.password }}
執行程式碼
python manage.py runserver
點選執行程式碼後的連結
在後輸入/show 即為展示班級頁面
點選班級即為新增學生頁面

 

 

 

相關文章