2、在虛擬環(huán)境中安裝Django:pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple

3、創(chuàng)建項目learning_log

django-admin startp" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運營 > 使用django-bootstrap3創(chuàng)建網(wǎng)站

使用django-bootstrap3創(chuàng)建網(wǎng)站

時間:2023-06-09 20:06:02 | 來源:網(wǎng)站運營

時間:2023-06-09 20:06:02 來源:網(wǎng)站運營

使用django-bootstrap3創(chuàng)建網(wǎng)站:

創(chuàng)建項目

1、創(chuàng)建項目(learning_log_0126)

2、在虛擬環(huán)境中安裝Django:pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple

3、創(chuàng)建項目learning_log

django-admin startproject learning_log .
注意:空格+.很重要;會自動生成manage.py文件及項目名稱命名的文件夾(文件夾中有幾個非常重要的文件)

修改配置及數(shù)據(jù)庫

1、在項目文件夾下的settings.py文件配置數(shù)據(jù)庫類型及名稱(learning.sqlite)

'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'learning.sqlite',2、創(chuàng)建數(shù)據(jù)庫(learning.db)

命令:python manage.py migrate




3、修改settings.py:ALLOWED_HOSTS = ['*']

啟動運行并創(chuàng)建超級用戶

1、啟動服務器并查看項目:python manage.py runserver(或者:python manage.py runserver 0.0.0.0:8000)

2、訪問:http://127.0.0.1:8000(再試試:http://127.0.0.1:8000/admin)

會發(fā)現(xiàn)需要賬號登錄

3、創(chuàng)建超級用戶

python manage.py createsuperuser4、重新用 新建的超級用戶賬號登錄:http://127.0.0.1:8000/admin,會發(fā)現(xiàn)可以成功登陸

創(chuàng)建應用程序(learning_logs、users)并配置

1、輸入命令

python manage.py startapp learning_logspython manage.py startapp users2、安裝django-bootstrap3

3、在settings.py中加入第三方應用程序bootstrap3和自定義應用程序

4、定義并激活模型

1)修改models.py,添加如下代碼:

from django.db import modelsfrom django.contrib.auth.models import User# Create your models here.class Topic(models.Model): text=models.CharField(max_length=200) date_added=models.DateTimeField(auto_now_add=True) owner=models.ForeignKey(User,on_delete=models.CASCADE) def __str__(self): return self.textclass Entry(models.Model): topic=models.ForeignKey(Topic,on_delete=models.CASCADE) text=models.TextField() date_added=models.DateTimeField(auto_now_add=True) class Meta: verbose_name_plural='entries' def __str__(self): if len(self.text)>50: return self.text[:50]+'...' else: return self.text2)激活并遷移模型

python manage.py makemigrations learning_logspython manage.py migrate

向管理網(wǎng)站注冊模型

1、修改應用程序文件夾下文件admin.py,在最后添加代碼:

from learning_logs.models import Topicadmin.site.register(Topic)

創(chuàng)建網(wǎng)頁

創(chuàng)建客戶端網(wǎng)頁三個步驟:映射URL(即規(guī)定各網(wǎng)址由哪些視圖函數(shù)處理)、編寫視圖(定義網(wǎng)頁內容或者指定網(wǎng)頁模板)、編寫模板(定義網(wǎng)頁內容,支持Python和Django代碼)

1、編寫視圖

在learning_logs文件夾下創(chuàng)建文件forms.py,在內容如下:

from django import formsfrom .models import Topic,Entryclass TopicForm(forms.ModelForm): class Meta: model=Topic fields=['text'] labels={'text':''}class EntryForm(forms.ModelForm): class Meta: model=Entry fields=['text'] labels={'text':''} widgets={'text':forms.Textarea(attrs={'cols':80})}2、修改learning_logs文件夾下文件views.py,在內容如下:

'''為應用程序learning_logs編寫視圖函數(shù)'''from django.shortcuts import render,HttpResponse,get_object_or_404from .models import Topic,Entryfrom django.http import HttpResponseRedirect,Http404,StreamingHttpResponsefrom django.urls import reversefrom django.contrib.auth.decorators import login_requiredfrom .forms import TopicForm,EntryFormimport os# Create your views here.def index(request): return render(request,'learning_logs/index.html')@login_requireddef topics(request): '''顯示所有的主題''' topics=Topic.objects.filter(owner=request.user).order_by('date_added') context={'topics':topics} return render(request,'learning_logs/topics.html',context)@login_requireddef topic(request,topic_id): '''顯示特定主題及其所有的條目''' topic=get_object_or_404(Topic,id=topic_id) #確認請求的主題屬于當前用戶 check_topic_owner(request,topic) entries=topic.entry_set.order_by('-date_added') context={'topic':topic,'entries':entries} return render(request,'learning_logs/topic.html',context)@login_requireddef new_topic(request): '''添加新主題''' if request.method!='POST': #未提交數(shù)據(jù):創(chuàng)建給一個新表單 form=TopicForm() else: #POST提交的表單,對數(shù)據(jù)進行處理 form=TopicForm(request.POST) if form.is_valid(): new_topic=form.save(commit=False) new_topic.owner=request.user new_topic.save() return HttpResponseRedirect(reverse('learning_logs:topics')) context={'form':form} return render(request,'learning_logs/new_topic.html',context)@login_requireddef new_entry(request,topic_id): '''在特定的主題中添加新條目''' topic=Topic.objects.get(id=topic_id) check_topic_owner(request,topic) if request.method!='POST': #未提交數(shù)據(jù),創(chuàng)建一個空表單 form=EntryForm() else: #POST提交的數(shù)據(jù),對數(shù)據(jù)進行處理 form=EntryForm(data=request.POST) if form.is_valid(): new_entry=form.save(commit=False) new_entry.topic=topic new_entry.save() return HttpResponseRedirect(reverse('learning_logs:topic',args=[topic_id])) context={'topic':topic,'form':form} return render(request,'learning_logs/new_entry.html',context)@login_requireddef edit_entry(request,entry_id): '''編輯既有條目''' entry=Entry.objects.get(id=entry_id) topic=entry.topic check_topic_owner(request,topic) if request.method!='POST': #初次請求,使用當前條目填充表單 form=EntryForm(instance=entry) else: #POST提交的數(shù)據(jù),對數(shù)據(jù)進行處理 form=EntryForm(instance=entry,data=request.POST) if form.is_valid(): form.save() return HttpResponseRedirect(reverse('learning_logs:topic',args=[topic.id])) context={'entry':entry,'topic':topic,'form':form} return render(request,'learning_logs/edit_entry.html',context)def check_topic_owner(request,topic): if topic.owner!=request.user: raise Http4043、修改users文件夾下文件views.py,在內容如下:

'''為應用程序users編寫視圖函數(shù)'''from django.shortcuts import renderfrom django.http import HttpResponseRedirectfrom django.urls import reversefrom django.contrib.auth import login,logout,authenticatefrom django.contrib.auth.forms import UserCreationForm# Create your views here.def logout_view(request): '''注銷用戶''' logout(request) return HttpResponseRedirect(reverse('learning_logs:index'))def register(request): '''注冊新用戶''' if request.method!='POST': #顯示空的注冊表單 form=UserCreationForm() else: #處理填寫好的表單 form=UserCreationForm(data=request.POST) if form.is_valid(): new_user=form.save() #讓用戶自動登錄,再重定向到主頁 authenticated_user=authenticate(username=new_user.username,password=request.POST['password1']) login(request,authenticated_user) return HttpResponseRedirect(reverse('learning_logs:index')) context={'form':form} return render(request,'users/register.html',context)

映射URL

規(guī)定項目內各應用程序的二級網(wǎng)址及由哪個應用程序的urls.py處理映射;規(guī)定應用程序各網(wǎng)址由哪些視圖函數(shù)處理

1、在learning_logs文件夾下創(chuàng)建新文件urls.py,內容如下:

'''定義learning_logs的URL模式'''from django.urls import re_pathfrom . import viewsapp_name='learning_logs'urlpatterns=[ #主頁 re_path(r'^$',views.index,name='index'), #顯示所有的主題 re_path(r'^topics$',views.topics,name='topics'), re_path(r'^topics/(?P<topic_id>/d+)/$',views.topic,name='topic'), re_path(r'^new_topic/$',views.new_topic,name='new_topic'), re_path(r'^new_entry/(?P<topic_id>/d+)/$',views.new_entry,name='new_entry'), re_path(r'^edit_entry/(?P<entry_id>/d+)/$',views.edit_entry,name='edit_entry'), ]2、在users文件夾下創(chuàng)建新文件urls.py,內容如下:

'''為應用程序users定義URL模式'''from django.urls import re_path,includefrom django.contrib.auth.views import LoginViewfrom . import viewsapp_name='users'urlpatterns=[ #登錄頁面 re_path(r'^login/$',LoginView.as_view(template_name='users/login.html'),name='login'), #注銷 re_path(r'^logout/$',views.logout_view,name='logout'), #注冊 re_path(r'^register/$',views.register,name='register'), ]3、 修改項目文件夾(learning_log)下文件urls.py,內容如下:

'''為項目learning_log定義URL模式'''from django.contrib import adminfrom django.urls import path,include,re_pathurlpatterns = [ path('admin/', admin.site.urls), path('',include('learning_logs.urls',namespace='learning_logs')), path('users/',include('users.urls',namespace='users')),]

編寫模板

1、修改settings.py,內容如下:

'DIRS': [ os.path.join(BASE_DIR,'learning_logs/templates'), os.path.join(BASE_DIR,'users/templates'), ],注意:需要導入os模塊

2、在settings.py中添加如下內容:

#我的設置LOGIN_URL='/users/login/'#django-bootstrap3的設置BOOTSTRAP3={ 'include_jquery':True, }3、在learning_logs文件夾下創(chuàng)建新文件夾templates,在此文件夾下創(chuàng)建learning_logs文件夾,再在此文件夾下創(chuàng)建base.html、index.html等模板文件

內容如下:

1)base.html:

{% load bootstrap3 %}<!DOCTYPE html><html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width,initial-scale=1"> <title>Learning Log</title> {% bootstrap_css %} {% bootstrap_javascript %} </head><body> <!-- Static navbar --> <nav class="navbar navbar-default navbar-static-top> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"></button> <a class="navbar-brand" href="{% url 'learning_logs:index' %}">Learning Log</a> </div> <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li><a href="{% url 'learning_logs:topics' %}">Topic</a></li> </ul> <ul class="nav navbar-nav navbar-right"> {% if user.is_authenticated %} <li><a>Hello,{{ user.username }}.</a></li> <li><a href="{% url 'users:logout' %}">log out</a></li> {% else %} <li><a href="{% url 'users:register' %}">register</a></li> <li><a href="{% url 'users:login' %}">log in</a></li> {% endif %} </ul> </div><!-- .nav-collapse --> </div> </nav> <div class="container"> <div class="page-header"> {% block header %}{% endblock header %} </div> <div> {% block content %}{% endblock content %} </div> </div><!-- /container --></body></html>2)index.html:

{% extends 'learning_logs/base.html' %}{% block header %} <div class="jumbotron"> <h1>Track your learning.</h1> </div>{% endblock header %}{% block content %} <h2> <a href="{% url 'users:register' %}">Register an account</a> to make your own Learning Log, and list the topics you're learning about. </h2> <h2> Whenever you learn something new about a topic, make an entry summarizing what you've learned. </h2>{% endblock content %}3)topics.html:

{% extends 'learning_logs/base.html' %}{% block header %} <h1>Topics</h1>{% endblock header %}{% block content %} <ul> {% for topic in topics %} <li> <h3> <a href="{% url 'learning_logs:topic' topic.id %}">{{ topic }}</a> </h3> </li> {% empty %} <li>No topics have been added yet.</li> {% endfor %} </ul> <h3><a href="{% url 'learning_logs:new_topic' %}">Add a new topic:</a></h3>{% endblock content %}4)topic.html:

{% extends 'learning_logs/base.html' %}{% block header %} <h2>{{ topic }}</h2>{% endblock header %}{% block content %} <p><a href="{% url 'learning_logs:new_entry' Domain Expired %}">add new entry</a></p> <ul> {% for entry in entries %} <div class="panel_panel-default"> <div class="panel-heading"> <h3> {{ entry.date_added|date:'M d,Y H:i' }} <small> <a href="{% url 'learning_logs:edit_entry' Make your brand pixel-perfect %}">edit entry</a> </small> </h3> </div> <div class="panel-body"> {{ entry.text|linebreaks }} </div> </div><!-- panel --> {% empty %} There are no entries for this topic yet. {% endfor %} </ul>{% endblock content %}5)new_topic.html:

{% extends 'learning_logs/base.html' %}{% load bootstrap3 %}{% block header %} <h2>Add a new topic:</h2>{% endblock header %}{% block content %} <form action="{% url 'learning_logs:new_topic' %}" method="post" class="form"> {% csrf_token %} {% bootstrap_form form %} {% buttons %} <button name="submit" class="btn btn-primary">add topic</button> {% endbuttons %} </form>{% endblock content %}6)new_entry.html:

{% extends "learning_logs/base.html" %}{% load bootstrap3 %}{% block header %} <h2><a href="{% url 'learning_logs:topic' Domain Expired %}">{{ topic }}</a></h2> <h2>Add a new entry:</h2>{% endblock header %}{% block content %} <form action="{% url 'learning_logs:new_entry' topic.id %}" method="post" class="form"> {% csrf_token %} {% bootstrap_form form %} {% buttons %} <button name="submit" class="btn btn-primary">add entry</button> {% endbuttons %} </form>{% endblock content %}7)edit_entry.html:

{% extends "learning_logs/base.html" %}{% load bootstrap3 %}{% block header %} <h2><a href="{% url 'learning_logs:topic' Domain Expired %}">{{ topic }}</a></h2> <h2>Edit entry:</h2>{% endblock header %}{% block content %} <form action="{% url 'learning_logs:edit_entry' Make your brand pixel-perfect %}" method="post" class="form"> {% csrf_token %} {% bootstrap_form form %} {% buttons %} <button name="submit" class="btn btn-primary">save changes</button> {% endbuttons %} </form>{% endblock content %}4、在users文件夾下創(chuàng)建新文件夾templates,在此文件夾下創(chuàng)建users文件夾,再在此文件夾下創(chuàng)建login.html、register.html模板文件

內容如下:

1)login.html:

{% extends 'learning_logs/base.html' %}{% load bootstrap3 %}{% block header %} <h2>Log in to your account.</h2>{% endblock header %}{% block content %} <form action="{% url 'users:login' %}" method="post" class="form"> {% csrf_token %} {% bootstrap_form form %} {% buttons %} <button name="submit" class="btn btn-primary">log in</button> {% endbuttons %} <input type="hidden" name="next" value="{% url 'learning_logs:index' %}"/> </form>{% endblock content %}S2)register.html:

{% extends 'learning_logs/base.html' %}{% load bootstrap3 %}{% block header %} <h2>Register an account to make your own Learning Log</h2>{% endblock header %}{% block content %} <form action="" method="post" class="form"> {% csrf_token %} {% bootstrap_form form %} {% buttons %} <button name="submit" class="btn btn-primary">register</button> {% endbuttons %} <input type="hidden" name="next" value="{% url 'learning_logs:index' %}"/> </form>{% endblock content %}

重新運行

在瀏覽器中查看主頁(http://127.0.0.1:8000),通過超鏈接訪問其他網(wǎng)頁

如果對django學習感興趣,可以看下相關的書籍,《輕量級Django》提供了一系列簡單小巧的應用開發(fā)項目,相信初學者跟著實踐,也會很有收獲。



關鍵詞:創(chuàng)建,使用

74
73
25
news

版權所有? 億企邦 1997-2025 保留一切法律許可權利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點擊下載Chrome瀏覽器
關閉