python

django总结(配置的流程)

2019-02-23  本文已影响30人  _narcissus

自动生成的那个项目是主项目,而我们要做自己的项目。所以要生成自己的子项目,idea的terminal中输入:

  python manage.py startapp 项目名字  #初始化自己的项目(例如我的file就是子项目)
terminal位置

然后在settings.py中配置子项目

  INSTALLED_APPS 添加自己新建的项目名
STATICFILES_DIRS=[
    os.path.join(BASE_DIR,'static')
]
show databases;
create database djangotest default character set utf8;

· 修改settings.py中数据库连接的配置(默认是sqlite3)

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangotest', #数据库名
        'USER': 'root',
        'PASSWORD': '1234',
        'HOST': '127.0.0.1',
        'PORT': '3306'
    }
}
from django.db import models
# Create your models here.
# 
class Userinfo(models.Model):
    email=models.CharField(max_length=50,unique=True)
    password=models.CharField(max_length=50)
    nickname=models.CharField(max_length=50)
    mobile=models.CharField(max_length=32,unique=True)
    birthday=models.DateField()
    createtime=models.DateTimeField(auto_now_add=True)

class MessageInfo(models.Model):
    message=models.CharField(max_length=2000)
    score=models.DecimalField(max_digits=19,decimal_places=2,default=2)
    messagetime=models.DateTimeField(auto_now_add=True)
    useful=models.IntegerField(default=0)
    useless=models.IntegerField(default=0)
    uid=models.ForeignKey('Userinfo',on_delete=models.CASCADE)
#on_delete=models.CASCADE保证了主键数据被清除时,外键的相关数据也会被清除。避免了垃圾数据的产生

在idea的terminal中输入

  python manage.py makemigrations    #自动化生成迁移文件
  python manage.py migrate    #自动化生成数据库表

这样数据库表就自动建好了

数据库表
数据库表字段(数据是后来添加进去的)

如果第二条命令出错,那么可能是最新版本django不支持旧mysql的问题,对django降级后就ok了。terminal输入

  pip install django==2.0.0 -i https://pypi.douban.com/simple

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('file/',include('file.urls'))
]
from django.urls import path
from . import views
urlpatterns=[
    path('index/',views.index)
]

配置views.py,对url请求进行处理。(这里就是当输入http://127.0.0.1:8000/file/index/这个地址请求时,就返回一个渲染的index.html网页)

from django.shortcuts import render,redirect
def index(request):
    return render(request,'index.html')

好了,我们运行这个项目之后,首页就可以通过地址来访问了

在idea的terminal中输入:

python manage.py runserver 0.0.0.0:8000
html网页的a标签中指定跳转地址
子项目urls.py中配置链接需要调用的方法,来对请求进行处理
对请求进行处理:渲染注册页面
点击登录之后就可以跳转这个页面了
<body>
<form action="" method="">
{% csrf_token %}  #添加保护机制代码
</form>
</body>

mthod的传值方式分为post(隐式)和get(显式)
action后面是一个链接(必须有最后斜线),通过配置子项目urls.py地址请求views.py处理


signin.html 子项目urls.py
对请求的处理方法 这么写的

看见session了没,真的挺有用的。这里就需要判断是不是用户登录了,没登陆是发布了评论的。点发布评论之后就跳转评论页面了,一样的套路就不啰嗦了。(a标签写一个链接,urls给链接指定使用那个方法,方法做出处理)



吐槽现场

当评论写完后,点击发表评论,就发送一个请求。通过form标签给出响应地址,这个地址通过urls.py的配置,指定使用views.py中的发表评论方法。


怎么存数据到数据库里?这里有很重要的知识点了
def useful(request):
    get=request.GET #问号传参用get取值
    uid=get.get('uid')
    msg=MessageInfo.objects.filter(id=uid)
    point=msg[0].useful
    point+=1
    msg.update(useful=point)
    return redirect('/file/index')

越写越不想写,因为知识点实在是太分散了,不通过整个网页的制作流程来说的话就太乱了。好了,到这里所有知识点都包含进去了。

上一篇 下一篇

猜你喜欢

热点阅读