python(建立一個school的簡單django專案以及相關配置、完成school專案的models模板與檢視views的編寫—index(首頁)、add(新增學生))
學習目標:
python學習十九-django
建立一個新的student專案
學習內容:
1、建立一個school的簡單django專案以及相關配置
2、完成school專案的models模板與檢視views的編寫
1、建立專案以及相關配置
1、在cmd管理員介面中進入到存放專案的資料夾建立專案school
2、在Navicat中建立資料庫school
3、在pycharm中的setting中編寫程式碼連線資料庫
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'school',
'USER': 'root',
'PASSWORD': '1234',
'HOST': '127.0.0.1',
}
}
4、然後在pycharm的terminal中建立應用app1
5、在專案app1的檢視views中編寫index方法,編寫路由,然後用瀏覽器訪問到檢視index
- 編寫index
from django.shortcuts import render
from django.http import HttpResponse
def index(request):
return HttpResponse('hello world!!!')
- 到專案的setting中的INSTALLED_APPS新增應用app1,方便定址
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app1',
]
- 到應用app1中建立app1/urls.py檔案,編寫找到index的路由
from django.urls import path
from .views import *
urlpatterns = [
path('', index, name='index')
]
- 再到專案school的urls編寫路由,訪問時可以找到應用app1的urls
from django.contrib import admin
from django.urls import path,include
urlpatterns = [
path('app1/',include('app1.urls')),
path('admin/', admin.site.urls),]
- 訪問建立的檢視瀏覽器輸入http://127.0.0.1:8000/app1/
可以看見在檢視views中編寫的index返回的內容
6、在應用app1中的app1/models中編寫類,向資料庫mysql中提交生成表
from django.db import models
class Teacher(models.Model):
tname = models.CharField(max_length=20)
tage = models.IntegerField()
tgender = models.CharField(max_length=2)
def __str__(self):
return self.tname
class Student(models.Model):
sname = models.CharField(max_length=20)
sage = models.IntegerField()
sgender = models.CharField(max_length=2)
s_t = models.ForeignKey(Teacher, on_delete=models.CASCADE)
def __str__(self):
return self.tname
- 提交步驟:python manage.py runserver——》python manage.py makemigrations——》python manage.py migrate
- 向表格中新增資料
2、完成models模板與檢視views的編寫
1、建立templates
- 在school專案下建立templates資料夾,並完成相關配置
2、編寫index首頁
- 在app1/templates中建立index.html檔案
展示首頁樣式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<table border="1" bgcolor="#8fbc8f">
<tr><td>學生姓名</td><td>學生年齡</td><td>學生性別</td><td>操作</td></tr>
{%for i in student%}
<tr><td>{{i.sname}}</td><td>{{i.sage}}</td><td>{{i.sgender}}</td><td><a href="#">修改</a>|<a href="#">刪除</a></td></tr>
{% endfor %}
</table>
<a href="{% url 'add'%}">新增</a>
</body>
</html>
2、編寫add操作
在index頁面的下面有個add操作,在templates中新增add.html檔案,在子路由app1/urls.py中新增add路由,在檢視views新增add方法
- 當在index頁面選擇add時
- 當新增成功時
- 在templates中新增add.html檔案
- {% csrf_token %}(防止跨域訪問攻擊):在 HTTP 請求中以引數的形式加入一個隨機產生的 token,並在伺服器端建立一個攔截器來驗證這個token,如果請求中沒有 token 或者 token 內容不正確,則認為可能是CSRF攻擊而拒絕該請求
<div style="clear: both"></div>
:清bai除同行元素,不允許其它元du素與之在一行內- 在建立返回摁鈕時用input新增button屬性:
<input type="button" class="bt" value="返回">
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>新增學生</title>
<style type="text/css">
* {
font-size: 12px;
margin: 0;
padding: 0;
}
input {
width: 320px;
height: 24px;
border: 1px solid #999;
border-radius: 4px;
}
.formErr {
border: 1px solid #ff0000;
}
.form .label {
display: block;
float: left;
width: 128px;
height: 40px;
line-height: 40px;
text-align: end;
}
form .txt {
display: block;
float: left;
width: 340px;
height: 40px;
line-height: 40px;
padding-left: 16px;
}
bt {
width: 56px;
height: 24px;
background-color: green;
border: 0;
border-radius: 4px;
color: white;
}
.form .errTips {
width: 226px;
background-color: lightgreen;
color: darkred;
border-radius: 4px;
margin-left: 144px;
margin-top: 6px;
margin-bottom: 4px;
padding: 16px 48px;
}
</style>
</head>
<body>
<div class="form">
<form action="" method="post">
{% csrf_token %}
<div>
<span class="label">學生姓名</span>
<span class="txt"><input type="text" placeholder="6-20個字元" name='sname'/></span>
</div>
<div style="clear: both"></div>
<div>
<span class="label">學生性別</span>
<span class="txt">
<select name="sgender">
<option value="男">男</option>
<option value="女">女</option></select>
</span>
</div>
<div style="clear: both"></div>
<div>
<span class="label">教師選擇</span>
<span class="txt">
<select name="tid">
{% for t in teacher %}
<option value="{{t.id}}">{{ t.tname }}</option>
{% endfor %}
</select>
</span>
</div>
<div style="clear: both"></div>
<div>
<span class="label">學生年齡</span>
<span class="txt"><input type="text" placeholder="請輸入年齡" name="sage"/></span>
</div>
<div style="clear: both"></div>
{% if a %}
<div class="errTips">
<ul>
<li>{{ a }}</li>
</ul>
</div>
{% endif %}
<div style="clear: both"></div>
<div>
<span class="label"></span>
<span class="txt"><input type="submit" class="bt" value="提交"> <a href="{% url 'index' %}" ><input type="button" class="bt" value="返回"></a></span>
</div>
<div style="clear: both"></div>
</form>
</div>
</body>
</html>
- 在app1/urls中新增路由
from django.urls import path
from .views import *
urlpatterns = [
path('', index, name='index'),
path('add', add, name='add'),
]
- 在檢視app1/views中新增add方法
def add(request):
a = ''
teacher = Teacher.objects.all()
if request.POST:
a = Student.objects.create( sname=request.POST['sname'], sgender=request.POST['sgender'], sage = request.POST['sage'], s_t_id=request.POST['tid'])
if a:
a='新增成功'
return render(request,'add.html',{'teacher':teacher,'a':a})
相關文章
- 如何在Linux安裝Python+JDK+Mysql+Tomcat+Django以及簡單的跑一個java web專案和一個簡單的Django專案LinuxPythonJDKMySqlTomcatDjangoJavaWeb
- Python 建立一個Django專案PythonDjango
- 一個vue-cli建立專案webpack相關都配置合簡介VueWeb
- Django建立第一個專案Django
- 建立第一個django專案Django
- 專案中的一個AOP的編寫案例(配置+案例)
- 配置一個簡單的傳統SSM專案SSM
- 從零開始:Django專案的建立與配置指南Django
- python(django(管路頁面、概況、編寫檢視佔位、編寫一個真正的檢視、丟擲錯誤、檢視使用模板系統、去除硬編碼url、為url新增命名開空間、編寫表單))PythonDjango
- 中國學生的福利 蘋果“Back to school ”來了蘋果
- Django框架簡介和建立django專案的基本流程Django框架
- 編寫一個簡單的JavaScript模板引擎JavaScript
- IDEA配置Maven執行一個簡單的專案IdeaMaven
- 一個簡單的 SpringBoot 專案的 Dockfile 和 cicd 檔案配置Spring Boot
- dya49:django:wsgrief&模板渲染Jinjia2&django的MTV/MVC框架&建立/啟動一個django專案DjangoMVC框架
- 如何完成一個優秀的專案
- 使用Gradle建立一個最簡單的Spring Boot專案GradleSpring Boot
- Vue3專案的簡單搭建與專案結構的簡單介紹Vue
- ZBlog首頁與列表頁相關模板
- 建立一個Phone實體,完成多頁面的電話簿專案
- 建立一個SpringBoot專案,實現簡單的CRUD功能和分頁查詢Spring Boot
- 分享一個簡單的聊天室專案
- Luffy專案:2、專案需求(2),專案庫的建立,軟體開發目錄,Django配置檔案介紹Django
- 建立Maven模板專案Maven
- 怎樣快速將一個非jbuilder編寫的專案變為jbuilder專案UI
- django建立的專案路徑問題Django
- 建立一個簡單的初級SpringMVC專案(非註解版)SpringMVC
- 一個C++專案的Makefile編寫-Tony與Alex的對話系列C++
- 分享一個我的 Django 部落格專案Django
- 完成專案的一點思考
- 多頁專案的webpack配置Web
- Windows 專案的 CMakeLists 編寫Windows
- Django初級手冊1-專案和應用的建立與簡單的資料庫操作Django資料庫
- 01.Django學習之安裝,建立專案,傳參,MySQL資料庫,靜態檔案配置和模板的使用DjangoMySql資料庫
- C#如何建立一個可快速重複使用的專案模板C#
- 構建一個簡單的react-typescript專案ReactTypeScript
- Django(3)pycharm建立專案DjangoPyCharm
- 關於一個java專案呼叫另一個java專案的心得Java