使用django搭建一个项目

windows7

python 3.7

idea

安装django

pip install django

创建HelloWorld

在D:/HelloWorld 执行

django-admin startproject HelloWorld

会在当前目录下生产HelloWorld项目

使用idea打开

在idea的Terminal 中执行(在CMD中执行卡在了Watching for file changes with StatReloader)

python manage.py runserver

 访问 http://127.0.0.1:8000/

设置下admin的账号密码

访问http://127.0.0.1:8000/admin 

输入账号和密码

 

 

在HelloWorld的view.py中增加代码

from django.http import HttpResponse


def hello(request):
    return HttpResponse('Hello World! django')

 在helloWorld中的urls中配置下

from django.contrib import admin
from django.urls import path
from . import view
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^hello$', view.hello),
]

url() 函数
Django url() 可以接收四个参数,分别是两个必选参数:regex、view 和两个可选参数:kwargs、name,接下来详细介绍这四个参数。

  • regex: 正则表达式,与之匹配的 URL 会执行对应的第二个参数 view。
  • view: 用于执行与正则表达式匹配的 URL 请求。
  • kwargs: 视图使用的字典类型的参数。
  • name: 用来反向获取 URL。

 

访问 http://127.0.0.1:8000/hello

在manage.py同级目录下新建templates目录,新建hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
hello {{helloMap}}
</body>
</html>

修改settings.py 中的TEMPLATES

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, "templates")],
       '''
    }

 在helloworld的view.py中增加

from django.shortcuts import render


def helloMap(request):
    context = {}
    context['helloMap'] = 'myHello Map'
    return render(request, 'hello.html', context)

 配置下urls.py

from django.contrib import admin
from django.urls import path
from HelloWorld.view import hello, helloMap
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^hello$', hello),
    url('helloMap/', helloMap),
]

 访问http://127.0.0.1:8000/helloMap/

 

新建app

先安装下mysql

pip install mysqlclient

 新建一个app

django-admin startapp AppTest

会生成一个AppTest项目

在settings.py中加入

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'AppTest', 
]

在settings中新增数据库连接信息 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'test',
        'USER': 'root',
        'PASSWORD': 'mysql',
        'HOST': 'localhost',
        'PORT': '3306'
    }
}

在AppTest的models.py中增加代码 

from django.db import models

# Create your models here.
class Person(models.Model):
    name = models.CharField('名称', max_length=100)
    age = models.IntegerField('年龄')
    address = models.CharField('地址', max_length=300)
    id =models.IntegerField('编号', primary_key=True)
    def __unicode__(self):
        return self.id

执行

python manage.py migrate 
python manage.py makemigrations AppTest
python manage.py migrate AppTest

注意: 可能报错

django.db.migrations.exceptions.MigrationSchemaMissing: Unable to create the django_migrations table ((1064, "You have an error in your SQL
 syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NOT NULL)' at line 1"))

原因是mysql的版本过低, 请至少升级mysql的版本至5.6

全部执行完成之后,可以看到数据库中的表

在AppTest的admin.py中增加配置

from django.contrib import admin
from AppTest.models import Person


admin.site.register(Person)

可以直接操作Person的数据库 

 操作一下网页版本

appTest的models新增user

class User(models.Model):
    user = models.CharField('账号', max_length=16)
    pwd = models.CharField('密码', max_length=32)
    id = models.AutoField('编号', primary_key=True)

在views里面新增

def add(request):
    from AppTest import models
    # 1
    # u = models.User(user='shj')
    # u.save()
    # 2
    # models.User.objects.create(user='sss',pwd='123456')
    dic = {'user':'wkk','pwd':'wkk'}
    models.User.objects.create(**dic)
    return HttpResponse('增加成功')

查询

def select(request):
    from AppTest import models
    user_list = models.User.objects.all()
    return render(request, 'user.html', {'user_list': user_list})

templates/user.html 

<!--
  ~ Copyright (C) 2020 Baidu, Inc. All Rights Reserved.
  -->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table border="1">
    <thead>
        <tr>
            <td>账号</td>
            <td>密码</td>
        </tr>
    </thead>
    <tbody>
        {% for user in user_list%}
            <tr>
                <td>{{user.user}}</td>
                <td>{{user.pwd}}</td>
            </tr>
        {% endfor%}
    </tbody>
</table>
</body>
</html>

配置urls


from django.contrib import admin
from django.urls import path
from HelloWorld.view import hello, index, helloMap
from AppTest.views import add, select
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^hello$', hello),
    url('helloMap/', helloMap),
    url('index/', index),
    url('appTest/add/', add),
    url('appTest/select/', select),
]

 

 在网页中增加数据并显示

修改views.py,增加代码

from django.views.decorators.csrf import csrf_protect


def home(request):
    return render(request, 'user.html')


@csrf_protect
def addHtml(request):
    from AppTest import models
    if request.method == 'POST':
        user = request.POST['user']
        pwd = request.POST['pwd']
        models.User.objects.create(user=user,pwd=pwd)
    user_list = models.User.objects.all()
    return render(request, 'user.html', {"user_list": user_list})

修改urls.pu

urlpatterns = [
    '''
    url('appTest/home/', home),
    url('appTest/addHtml/', addHtml),
]

修改user.tml


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/appTest/addHtml/" method="post">
    {% csrf_token %}
    账号: <input type = 'text' name="user" /><br />
    密码: <input type = 'password' name="pwd" /><br />
    <input type = 'submit' value="增加" />
</form>
<table border="1">
    <thead>
        <tr>
            <td>账号</td>
            <td>密码</td>
        </tr>
    </thead>
    <tbody>
        {% for user in user_list%}
            <tr>
                <td>{{user.user}}</td>
                <td>{{user.pwd}}</td>
            </tr>
        {% endfor%}
    </tbody>
</table>
</body>
</html>

注意: 1 form的action 路径结尾需要加上 '/', 否则可能报错

Exception Type:	RuntimeError
Exception Value:	
You called this URL via POST, but the URL doesn't end in a slash and you have APPEND_SLASH set. Django can't redirect to the slash URL while maintaining POST data. Change your form to point to 127.0.0.1:8000/appTest/addHtml/ (note the trailing slash), or set APPEND_SLASH=False in your Django settings.

2 如果不加入csrf,则会报错

 在浏览器中访问http://127.0.0.1:8000/appTest/home/

增加一条数据

一个完整的网页操作数据库 功能

models.py

from django.db import models


class User(models.Model):
    user = models.CharField('账号', max_length=16)
    pwd = models.CharField('密码', max_length=32)
    id = models.AutoField('编号', primary_key=True)

views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.template.context import RequestContext
from django.views.decorators.csrf import csrf_protect


def home(request):
    return render(request, 'user.html')


def add(request):
    from AppTest import models
    # 1
    # u = models.User(user='shj')
    # u.save()
    # 2
    # models.User.objects.create(user='sss',pwd='123456')
    dic = {'user':'wkk','pwd':'wkk'}
    models.User.objects.create(**dic)
    return HttpResponse('增加成功')

@csrf_protect
def addHtml(request):
    from AppTest import models
    if request.method == 'POST':
        user = request.POST['user']
        pwd = request.POST['pwd']
        models.User.objects.create(user=user,pwd=pwd)
    user_list = models.User.objects.all()
    return render(request, 'user.html', {"user_list": user_list})
    # 1
    # u = models.User(user='shj')
    # u.save()
    # 2
    # models.User.objects.create(user='sss',pwd='123456')
    dic = {'user':'wkk','pwd':'wkk'}
    models.User.objects.create(**dic)
    return HttpResponse('增加成功')


def updateHtml(request):
    from AppTest import models
    if request.method == 'POST':
        id = request.POST['id']
        user = request.POST['user']
        pwd = request.POST['pwd']
        models.User.objects.filter(id=id).update(user=user, pwd=pwd)
    user_list = models.User.objects.all()
    return render(request, 'user.html', {"user_list": user_list})


def select(request):
    from AppTest import models
    user_list = models.User.objects.all()
    return render(request, 'user.html', {'user_list': user_list})


def deleteHtml(request):
    from AppTest import models
    if request.method == 'GET':
        id = request.GET['id']
        models.User.objects.filter(id=id).delete()
    user_list = models.User.objects.all()
    return render(request, 'user.html', {"user_list": user_list})

urls.py

 


from django.contrib import admin
from django.urls import path
from HelloWorld.view import hello, index, helloMap
from AppTest.views import add, select, addHtml, home, deleteHtml, updateHtml
from django.conf.urls import url

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^hello$', hello),
    url('helloMap/', helloMap),
    url('index/', index),
    url('appTest/home/', home),
    url('appTest/add/', add),
    url('appTest/addHtml/', addHtml),
    url('appTest/deleteHtml/', deleteHtml),
    url('appTest/updateHtml/', updateHtml),
    url('appTest/select/', select),
]

一个完整的增删改查页面


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/appTest/addHtml/" method="post">
    {% csrf_token %}
    账号: <input type = 'text' name="user" /><br />
    密码: <input type = 'password' name="pwd" /><br />
    <input type = 'submit' value="增加" />
</form>
<table border="1" style={margin-top: 20px}>
    <thead>
        <tr>
            <td>编号</td>
            <td>账号</td>
            <td>密码</td>
            <td>操作</td>
        </tr>
    </thead>
    <tbody>
        {% for user in user_list%}
            <tr>
                <td>{{user.id}}</td>
                <td>{{user.user}}</td>
                <td>{{user.pwd}}</td>
                <td>
                    <a href="/appTest/deleteHtml/?id={{user.id}}" >删除</a>
                    <form action="/appTest/updateHtml/" method="post">
                        {% csrf_token %}
                        <input type = 'hidden' value={{user.id}} name="id" /><br />
                        账号: <input type = 'text' name="user" /><br />
                        密码: <input type = 'password' name="pwd" /><br />
                        <input type = 'submit' value="修改" />
                    </form>
                </td>
            </tr>
        {% endfor%}
    </tbody>
</table>
</body>
</html>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
搭建一个博客网站可以分为以下几个步骤: 1. 安装 Django 首先需要安装 Django,可以通过 pip 命令进行安装: ``` pip install django ``` 2. 创建 Django 项目 在命令行中进入要创建项目的目录,然后运行以下命令: ``` django-admin startproject myblog ``` 这会在当前目录下创建一个名为 myblog 的 Django 项目。 3. 创建应用 在 Django 中,可以通过应用来组织代码。一个 Django 项目可以包含多个应用。运行以下命令创建一个名为 blog 的应用: ``` python manage.py startapp blog ``` 这会在 myblog 目录下创建一个名为 blog 的应用。 4. 配置数据库 Django 默认使用 SQLite3 数据库,可以在 myblog/settings.py 文件中进行配置。例如,将数据库改为 MySQL: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'myblog', 'USER': 'mybloguser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } } ``` 5. 定义模型 在 blog 应用中,可以定义模型来描述博客文章的结构。打开 blog/models.py 文件,添加以下内容: ```python from django.db import models class Post(models.Model): title = models.CharField(max_length=200) content = models.TextField() pub_date = models.DateTimeField(auto_now_add=True) ``` 6. 创建数据库表 运行以下命令创建数据库表: ``` python manage.py makemigrations python manage.py migrate ``` 7. 创建视图 在 blog/views.py 文件中创建视图函数: ```python from django.shortcuts import render from blog.models import Post def post_list(request): posts = Post.objects.all() return render(request, 'blog/post_list.html', {'posts': posts}) ``` 8. 创建模板 在 blog/templates/blog 目录下创建一个名为 post_list.html 的模板文件,添加以下内容: ```html {% for post in posts %} <h2>{{ post.title }}</h2> <p>{{ post.content }}</p> <p>{{ post.pub_date }}</p> {% endfor %} ``` 9. 配置 URL 在 myblog/urls.py 文件中添加以下内容: ```python from django.urls import path from blog.views import post_list urlpatterns = [ path('', post_list, name='post_list'), ] ``` 10. 运行开发服务器 运行以下命令启动 Django 开发服务器: ``` python manage.py runserver ``` 11. 浏览网站 在浏览器中访问 http://localhost:8000/,可以看到博客文章列表。 以上是 Django 搭建一个博客网站的基本步骤,可以根据实际需要进行扩展和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Hero_孙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值