1. pip install django==3.0
2. django-admin startproject myweb
3. python manage.py runserver 打开服务器
4. python manage.py startapp webapp 创建项目
5. 编写第一个视图:
在webapp/views.py 中写入以下代码:
from django.http import HttpResponse
def inidex(request):
return HttpResponse("Hello, world. You re at the myapp index")
这是Django中最简单的视图,如果需要调用他,则需要将其映射到一个URL,为此需要在webapp中创建一个URLconf,创建名为urls.py。(这是我们创建的路由配置文件)
import django.urls import path
from . import views
urlpatterns = [
path('', views.index, name = 'index'),
]
再打开myweb下的总路由文件urls.py,增加一个字段path。
from django.contrib import admin
from django.urls import path
urlpatterns = [
path('admin/', admin.site.urls),
path("webapp/", include('myweb.urls'))
]
然后用localhost:8000/myweb/就可以访问到了Hello, world. You re at the myapp index了。
原理:settings->ROOT_URLCONF='myweb.urls'->urls
6. 数据库操作
默认情况使用SQLite,若不使用SQLite,则需要设置用户名,密码和HOST等。
其中ENGINE设置为数据库后端使用,内置数据库后端有:<用来加载驱动>
django.db.backends.postgresql
django.db.backends.mysql
django.db.backends.sqlite3
django.db.backends.oracle
DATABASES = {
'default': {
'ENGINE':'django.db.backend.sqlite3', # 换这个
'NAME': os.path.join(BASE_DIR, 'db.sqlite3')
}
}
如果换成mysql:
DATABASE = {
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME' : 'mydemo',
'USER': 'root',
'PASSWORD':'',
'HOST':'localhost',
'PORT': '3306',
}
}
测试以下本地是否存在mysql数据库, Django需要安装mysqlclient: pip install mysqlclient
注意ubuntu20.04安装时,需要先装依赖,不然会报错。sudo apt install libmysqlclient-dev
mysql -u root -p
mysql>use mydeo
mysql>select * from stu;
编写一个简单的stu的model类:
编辑myweb/models.py类
from django.db import models
class Stu(models.Model):
""
自定义Stu表对应的model类
""
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=16)
age = models.SmallIntegerField()
sex = models.CharField(max_length=1)
classid = models.CharField(max_length=8)
# 定义默认输出格式
def __str__(self):
return "%d:%s:%d:%s:%s"%(self.id, self.name,self.age, self.sex, self.classid)
class Meta:
db_table = "stu"
如何应用?在setting中的INSTALLED_APPS下加入:
INSTALLED_APPS = [
'webapp.apps.WebappConfig', # 或者直接写webapp
]
观察效果。我们启动python manage.py shell
>>> from webapp.models import Stu
>>> mod = Stu.objects
>>> mod.get(id = 6)
<Stu: 6:xiaowang:22:w:python04>
>>> slist = mod.all()
>>> for s in slist:
... print(s)
...
1:zhangsan:20:m:python02
2:grg:20:m:python00
3:dsa:20:m:python08
4:dsff:20:m:python07
5:etr4t:20:m:python03
如果想在views中显示,怎么做呢?
from django.shortcuts import render
from django.http import HttpResponse
from myapp.models import Stu
def index(request):
return HttpResponse("Hello World")
def add(request):
lists = Stu.objects.all()
for stu in lists:
print(stu)
print(Stu.objects.get(id=6))
return HttpResponse("Add.......")
ebapp中的urls.py
import django.urls import path
from . import views
urlpatterns = [
path('', views.index, name = 'index'),
path('show', views.add, name = 'Add')
]
http://localhost:8000/webapp/show 最后显示的是Add....说明add这个方法已经执行了。
7. 启动网站的admin (一般不用,改起来很麻烦,不会商用)
必须保证可以连接数据库。
因为可以自动在数据库中生成表,作为后台管理,称之为数据结构迁移;
python manage.py migrate
在我们的mydemo数据库中会多出将近10个表。
然后我们就可以创建管理员用户:
$ python manage.py createsupersuer
# 请输入您所需的用户名,然后按Enter键
Username: admin
# 然后将提示您输入所需的电子邮件地址
Email address : admin@example.com
# 最后一步是输入您的密码>=8位
Password:**************
Password:**************
Superuser create successfully.
启动: python manage.py runserver
http://localhost:8000/admin 输入账号密码就登录进去了
在myweb/settings.py配置文件:显示中文的后台管理
LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'
如何将我们自定义的应用程序加入到后台管理
打开webapp/admin.py文件,编辑代码:
from django.contrib import admin
from webapp.models import Stu
admin.site.register(Stu)
我们就可以在后台添加Stu表的人员。但是显示的都是数据库中英文的字段。我们再改以下model
from django.db import models
class Stu(models.Model):
""
自定义Stu表对应的model类
""
id = models.AutoField("学号", primary_key=True)
name = models.CharField("姓名", max_length=16)
age = models.SmallIntergerField("年龄")
sex = models.CharFierld("性别", max_length=1)
classid = models.CharField("班级", max_length=8)
# 定义默认输出格式
def __str__(self):
return "%d:%s:%d:%s:%s"%(self.id, self.name,self.age, self.sex, self.classid)
class Meta:
db_table = "stu"
verbose_name = '浏览学生信息'
verbose_name_plural = '学生信息管理'
也可以换一种方式展示:再admin.py修改:
from django.contrib import admin
from webapp.models import Stu
@admin.register(Stu)
class StuAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'age', 'sex', 'classid')
list_display_links = ('id', 'name')
list_per_page = 10
ordering = ('id', )
8.mysql数据库的安装
Ubuntu20.04 启动数据库使用命令:
mysql -uroot -p
再安装可视化工具 MySQL-workbench https://dev.mysql.com/downloads/workbench/
https://blog.csdn.net/weixin_40763897/article/details/100167129