python3.5 django2.0.1
1.创建MyBlog项目
用Pycharm创建,打开菜单中的file>new project
创建项目后的目录如下:
也可以用命令行来创建项目
Windows+r输入cmd,打开cmd后cd desktop到桌面这样项目也就创建到桌面了,这样方便查看。
2.主要代码
创建所需文件,目录如下:
其中templates文件夹是为了存放前端页面。当一个项目有多个app时且templates下又有相同的html文件时,当打开该重名文件时,只会打开settings.py中INSTALLED_APPS中先写入app的html文件,所以在templates文件夹下建个bloghtml文件用于区分。当项目有很多app时,所有url设置都写在项目下的urls.py下会很杂乱,所以每个app新建一个urls.py,用来设置自己的url。
settings.py
用pycharm创建的app会自动写入下面的设置中,用cmd创建的app需要自己手动写入下面的设置里。LANGUAGE_CODE = 'zh-Hans'用来设置语言为汉语
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'blog.apps.BlogConfig', ]
LANGUAGE_CODE = 'zh-Hans'项目文件夹下的urls.pymodels.pyfrom django.contrib import admin from django.urls import path,include #include把我们创建的app下的urls.py包含 urlpatterns = [ path('admin/', admin.site.urls), path('blog/', include('blog.urls', namespace='myblogapp')) ]
from django.db import models # Create your models here. # 创建数据模型 class Article(models.Model): def __str__(self): return self.title #文章的标题 title = models.CharField(max_length=32,default='Title') #文章的内容 content = models.TextField(null=True)进行数据
我们的目录里会多出个数据库文件,可以下载sqlitestudio这个工具查看管理https://sqlitestudio.pl/index.rvt?act=download
index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1> <a href="{% url 'blogapp:editpage' 0%}">新建文章</a> </h1> {% for art in arts %} <a href="{% url 'blogapp:artpage' art.id%}">{{ art.title }}</a> {# <a href="artpage/{{art.id}}">{{art.title}}</a>#} <br> {% endfor %} </body> </html>
articlepage.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>articleapge</title> </head> <body> <h1>{{ art.title }}</h1> <br> <h3>{{ art.content }}</h3> <br> <a href="{% url 'blogapp:editpage' art.id%}">修改文章</a> </body> </html>
editpage.html
views.py<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>EDitpage</title> </head> <body> <form action="{% url 'blogapp:editaction' %}" method="post"> {% csrf_token %} {% if art %} <input type="hidden" name="articleid" value="{{ art.id }}"/> <label>文章标题 <input type="text" name="title" value="{{ art.title }}"> </label> <br> <label>文章内容 <input type="text" name="content" value="{{ art.content }}"> </label> <br> {% else %} <input type="hidden" name="articleid" value="0"/> <label>文章标题 <input type="text" name="title"> </label> <br> <label>文章内容 <input type="text" name="content"> </label> <br> {% endif %} <input type="submit" value="提交保存"> </form> </body> </html>
blog下urls.pyfrom django.shortcuts import render from django.shortcuts import HttpResponse from . import models # Create your views here. def index(request): articles = models.Article.objects.all() return render(request,'bloghtml/index.html',{'arts':articles}) def artpage(request,articleid): article = models.Article.objects.get(pk=articleid) return render(request,'bloghtml/articlepage.html',{'art':article}) def editpage(request,articleid): if str(articleid)=='0': return render(request,'bloghtml/editpage.html') article = models.Article.objects.get(pk=articleid) return render(request, 'bloghtml/editpage.html', {'art': article}) def editaction(request): title = request.POST.get('title','TITLE') content = request.POST.get('content','CONTENT') articleid = request.POST.get('articleid','0') if articleid =='0': models.Article.objects.create(title=title,content=content) articles = models.Article.objects.all() return render(request, 'bloghtml/index.html', {'arts': articles}) artile = models.Article.objects.get(pk=articleid) artile.title = title artile.content = content artile.save() return render(request, 'bloghtml/articlepage.html', {'art': artile})
django2.0要写上app_name,想要获取‘article/<int:articleid>/’链接就可以写成{% url 'blogapp:artpage' %}
创建admin用户from django.conf.urls import url from django.urls import path,re_path,include from blog import views #https://docs.djangoproject.com/en/2.0/ref/urls/#django.urls.path app_name='blogapp' urlpatterns = [ path('', views.index), path('article/<int:articleid>/', views.artpage,name='artpage'), # re_path(r'^article/(?P<articleid>[0-9]+)/$', views.artpage) path('edit/<int:articleid>/',views.editpage,name='editpage'), path('edit/action$/',views.editaction,name='editaction') ]
创建运行后地址栏输入http://127.0.0.1:8000/admin/输入账户密码就可以登录
地址栏输入http://127.0.0.1:8000/blog/就可以访问我们简单的博客了,可以新建文章修改文章