python-web

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数据库的安装

https://blog.csdn.net/wm609972715/article/details/83759266?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-6.control

Ubuntu20.04 启动数据库使用命令:

mysql -uroot -p

再安装可视化工具  MySQL-workbench https://dev.mysql.com/downloads/workbench/

https://blog.csdn.net/weixin_40763897/article/details/100167129

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值