导读:很多朋友问到关于django如何使用算法推荐前一部分随机的相关问题,本文首席CTO笔记就来为大家做个详细解答,供大家参考,希望对大家有所帮助!一起来看看吧!
如何使用Django生成Model
使用Django生成Model方法如下:
一、将旧的数据库添加到您的项目
编辑数据库设置。你需要告诉Django你的数据库连接参数是什么,以及数据库的名称,要做到这一点需要编辑数据库设置,并在“default”连接下面的键赋值。我们首先要打开settings.py文件,在文件中找到“DATABASES”,然后开始赋值。下面的数字序号和下图中数字序号对应。
①使用的数据库后端,这里使用PostgreSQL数据库。
②使用的数据库名称。
③连接到数据库时使用的用户名。
④连接到数据库时使用的密码。
⑤连接到数据库时使用的主机,这里使用的是本地主机。
⑥连接到数据库时使用的端口。
二、自动生成Model(模型)
1、创建Model(模型)。Django附带一个名为inspectdb的实用程序,可以通过检查现有的数据库来创建Model(模型)。您可以通过运行以下命令来实现。
2、在指定的文件中创建Model(模型)。将其另存为指定的文件。您可以通过运行以下命令来实现。
3、具体例子。现在我们通过一个具体例子的代码,让大家能更好理解。下面的数字序号和下图中数字序号对应。
①在项目中新建一个名为“legacy”的文件夹。
②在“legacy”的文件夹中创建一个名叫“legacy”的应用(app)。
③在指定文件(apps/legacy/models.py)中自动生成Model。
如何使用Django创建简单的博客
第一节:开始(Starting your application)
进入到你的项目目录中,这个目录中应该包含这几个文件__init__.py,manage.py,settings.py和urls.py。我的project名字是djangorocks,如果你要用到其他名字,你需要在以后的代码中替换所有djangorocks。
在终端(terminal)中输入以下命令,来创建新的app目录和几个基本文件,以便我们的博客使用。
python manage.py startapp blog
现在你应该有个文件夹下面包含这三个文件__init__.py, models.py 和 views.py。
Important
打开project文件夹中的settings.py,找到INSTALLED_APPS并添加"blog" ,代码如下:
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'djangorocks.blog',
)
Django现在已经知道你有一个新的app,下面的事情就是详细地来创建它。
第二节:定义你的模型(Defining your models)
这个模型也就是你的数据库结构,让我们打开app目录中的models.py,然后加入一些字段,因为这个非常简单,我将不会包含用户。
class Blog(models.Model):
title = models.CharField(max_length=100, unique=True)
slug = models.SlugField(max_length=100, unique=True)
body = models.TextField()
posted = models.DateField(db_index=True, auto_now_add=True)
category = models.ForeignKey('blog.Category')
class Category(models.Model):
title = models.CharField(max_length=100, db_index=True)
slug = models.SlugField(max_length=100, db_index=True)
现在我们来看看上面这段代码中每个部分分别代表什么意思
这将在数据库中创建一张名字为"Blog"的表,这是显而易见的,以后也会常用。
classBlog(models.Model):
这些都是要建立在数据库中的基本字段
title = models.CharField(max_length=100, db_index=True)
slug = models.SlugField(max_length=100, db_index=True)
body = models.TextField()
posted = models.DateTimeField(db_index=True, auto_now_add=True)
最后一个字段要稍微高级点,此字段的数据是从另一个表而来,也就是我们一般说的外键,具体可参考 SQL FOREIGN KEY 约束 。
category = models.ForeignKey('blog.Category')
模型构建完成
如何正确使用 Django Forms
1. Django Forms的强大之处
有些django项目并不直接呈现HTML, 二是以API框架的形式存在, 但你可能没有想到, 在这些API形式的django项目中也用到了django forms. django forms不仅仅是用来呈现HTML的, 他们最强的地方应该是他们的验证能力. 下面我们就介绍几种和Django forms结合使用的模式:
2. 模式一: ModelForm和默认验证
最简单的使用模式便是ModelForm和model中定义的默认验证方式的组合:
# myapp/views.py
from django.views.generic import CreateView, UpdateView
from braces.views import LoginRequiredMixin
from .models import Article
class ArticleCreateView(LoginRequiredMixin, CreateView):
model = Article
fields = ('title', 'slug', 'review_num')
class ArticleUpdateView(LoginRequiredMixin, UpdateView):
model = Article
fields = ('title', 'slug', 'review_num')
正如以上代码中看到的一样:
ArticleCreateView和ArticleUpdateView中设置model为Article
两个view都基于Article model自动生成了ModelForm
这些ModelForm的验证, 是基于Article model中定义的field转换而来的
3. 模式二, 在ModelForm中修改验证
在上面的例子中, 如果我们希望每篇article title的开头都是"new", 那么应该怎么做呢? 首先我们需要建立自定义的验证(validator):
# utils/validator.py
from django.core.exceptions import ValidationError
def validate_begins(value):
if not value.startswith(u'new'):
raise ValidationError(u'Must start with new')
可见, 在django中的验证程序就是不符合条件便抛出ValidationError的function, 为了方便重复使用, 我们将它们放在django app utils的validators.py中.
接下来, 我们可以在model中加入这些validator, 但为了今后的方便修改和维护, 我们更倾向于加入到ModelForm中:
# myapp/forms.py
from django import forms
from utils.validators import validate_begin
from .models import Article
class ArticleForm(forms.ModelForm):
dev __init__(self, *args, **kwargs):
super(ArticleForm, self).__init__(8args, **kwargs)
self.fields["title"].validators.append(validate_begin)
class Meta:
model = Article
Django的edit views(UpdateView和CreateView等)的默认行为是根据view中model属性, 自动创建ModelForm. 因此, 我们需要调用我们自己的Modelform来覆盖自动创建的:
# myapp/views.py
from django.views.generic import CreateView, UpdateView
from braces.views import LoginRequiredMixin
from .models import Article
from .forms import ArticleForm
class ArticleCreateView(LoginRequiredMixin, CreateView):
model = Article
fields = ('title', 'slug', 'review_num')
form_class = ArticleForm
class ArticleUpdateView(LoginRequiredMixin, UpdateView):
model = Article
fields = ('title', 'slug', 'review_num')
form_class = ArticleForm
4. 模式三, 使用form的clean()和clean_field()方法
如果我们希望验证form中的多个field, 或者验证涉及到已经存在之后的数据, 那么我们就需要用到form的clean()和clean_field()方法了. 以下代码检查密码长度是否大于7位, 并且password是否和password2相同:
# myapp/forms.py
from django import forms
class MyUserForm(forms.Form):
username = forms.CharField()
password = forms.CharField()
password2 = forms.CharField()
def clean_password(self):
password = self.cleaned_data['password']
if len(password) = 7:
raise forms.ValidationError("password insecure")
return password
def clean():
cleaned_data = super(MyUserForm, self).clean()
password = cleaned_data.get('password', '')
password2 = cleaned_data.get('password2', '')
if password != password2:
raise forms.ValidationError("passwords not match")
return cleaned_data
其中需要注意的是, clean()和clean_field()的最后必须返回验证完毕或修改后的值.
5. 模式四, 自定义ModelForm中的field
我们会经常遇到在form中需要修改默认的验证, 比如一个model中有许多非必填项, 但为了信息完整, 你希望这些field在填写时是必填的:
# myapp/models.py
from django.db import models
class MyUser(models.Model):
username = models.CharField(max_length=100)
password = models.CharField(max_length=100)
address = models.TextField(blank=True)
phone = models.CharField(max_length=100, blank=True)
为了达到以上要求, 你可能会通过直接增加field改写ModelForm:
# 请不要这么做
# myapp/forms.py
from django import forms
from .models import MyUser
class MyUserForm(forms.ModelForm):
# 请不要这么做
address = forms.CharField(required=True)
# 请不要这么做
phone = forms.CharField(required=True)
class Meta:
model = MyUser
请不要这么做, 因为这违反"不重复"的原则, 而且经过多次的拷贝粘贴, 代码会变得复杂难维护. 正确的方式应当是利用__init__():
# myapp/forms.py
from django import forms
from .models import MyUser
class MyUserForm(forms.ModelForm):
def __init__(self, *args, **kwarg):
super(MyUserForm, self).__init__(*args, **kwargs)
self.fields['address'].required = True
self.fields['phone'].required = True
class Meta:
model = MyUser
值得注意的是, Django forms也是Python类, 类可以继承和被继承, 也可以动态修改.
Python中Django如何使用?
django1.9.5python3.4.4
文件结构
在一个爬虫脚本中将爬取的数据通过django自带的model保存到数据库
修改的文件(其余pycharm新建Django项目生成,未修改):
# testapp/models.pyfrom django.db import models class Problem(models.Model): title = models.CharField(max_length=100, default="") author = models.CharField(max_length=100, default="") def __str__(self): return self.title pass# testapp/spider.pyimport osimport sysimport django pathname = os.path.dirname(os.path.abspath(__file__))sys.path.insert(0, pathname)sys.path.insert(0, os.path.abspath(os.path.join(pathname, '..')))os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testproject.settings") django.setup() from testapp.models import Problem if __name__ == "__main__": p = Problem(title="hi", author="hi") p.save() pass# testproject/setting.py......INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', # 添加应用 'testapp',]......# testapp/admin.py 在后台管理界面注册 Problemfrom django.contrib import admin # Register your models here. from testapp.models import Problemadmin.site.register(Problem)
运行spider.py,添加一条实例记录
运行Django项目, 创建管理员账号, 后台管理界面查看结果
如何使用Django创建博客?
如果您想开始写博客,又想使用功能强大的Web框架创建自己的博客,那么Django是您的最佳选择。目前该系列有14个教程,我仍在研究中,欢迎您给我更多的想法。
这些教程是:
为Django开发设置Vscode:在第一个视频中,您将学习如何在vscode文本编辑器上为Django建立开发环境。使用Django创建博客文章模型:该视频涵盖了为博客文章创建模型的所有细节,从标题,作者到标签。将富文本编辑器添加到Django项目:在这里,您将学习如何将富文本编辑器添加到表单或Django项目中的任何位置。
设计帖子页面:有关使用Bootstrap 4设计详细帖子页面的快速教程。
创建详细信息帖子类视图:您将学习如何为博客帖子创建基于类的视图,它将允许您在自定义帖子页面的管理页面上使用自定义链接显示我们在管理页面中创建的帖子。
跟踪您的Django网站的访问者数量:我们将看到如何跟踪博客文章的访问量/浏览量。我们将使用一个工具,让您知道多少访客在您看到时看到您的帖子。另外,您将能够知道他们的IP地址和他们使用的用户代理。
在Django中添加要发布的评论:在本视频中,您将看到如何在博客应用中添加评论模型。因此,读者可以向您发送评论,这将很容易执行和管理。此外,您还将看到如何将注释计数添加到视图文件。
设计博客页面-引导程序:您将设计博客页面,其中将列出博客文章和其他元素。
Django博客列表视图:在本视频中,您将看到如何在博客页面上显示博客文章,我们将介绍如何通过在帖子模型中添加另一个属性来访问每个帖子的链接。此外,您还将看到如何在边栏中显示热门帖子和帖子类别。
Django 3.1中的简单分页:此视频将仅介绍Django分页的下一个和上一个按钮。
Django搜索表单[带有Q对象的过滤器]:如何在Django博客网站中实现搜索功能
在Django中分页搜索结果:使用Bootstrap(CSS框架)创建简单的分页,然后将分页功能实现到Django搜索结果页面。
在详细信息帖子中添加类似的帖子小部件:将标记功能添加到我们的Django博客网站。
使用Django的简单用户身份验证系统:实现Django第三方应用程序,用户可以在其中注册,登录以及重设和更改密码。
结语:以上就是首席CTO笔记为大家介绍的关于django如何使用算法推荐前一部分随机的全部内容了,希望对大家有所帮助,如果你还想了解更多这方面的信息,记得收藏关注本站。