Django之环境搭建及初始配置

       
CI框架的分页类非常之好用,可以吃我们随便的去窜定制。但是以这边而说的凡,CI框架的分页功能仅仅只是提供一个显效果,不存在其他和数据库进行互的来意,它所出示的仅仅只是一个连续,其实际的数额查询功能,数据展示效果还是如我们温馨当模型中进行编制,这是CI框架的分页类和其它框架所不同之地方。大家要顾。好了,本篇就说这样多,其实分页类的代码功能还是非常简单明了的,只要稍微的圈同样篇就能知晓该切实的贯彻过程。

在pycharm的Terminal中输入如下命令:则创造了一个app

[php] view
plain copy

创建界面如下,可以观看新添了一个site_prj文件夹。

     CodeIgniter 的分页类非常容易使用,而且它们 100%
可定制,可以透过动态的参数,也得由此保留于配置文件被的参数。如果你还非熟识
“分页” 这个词,它依靠的凡用于你于页面内开展导航的链接。像下这样:

« First  < 1 2 3 4 5 >  Last »

 

选举个例说明什么当您的控制器方法中创造分页:

Ⅰ 在构造函数中引入分页类:

[php] view
plain data-mod=”popu_168″> data-mod=”popu_168″> copy

 

  1. public  class=”keyword”>function __construct(){  
  2.     parent::__construct();  
  3.     $this->load->library( class=”string”>’form_validation’);  
  4.     $this->load->model( class=”string”>’goodstype_model’);  
  5.     $this->load->library( class=”string”>’pagination’); class=”comment”>//引入分页类  
  6. }  

 

Ⅱ 设置配置参数,然后初始化调用输出:

 

[php] view
plain data-mod=”popu_168″> data-mod=”popu_168″> copy

 

  1. public  class=”keyword”>function index($offset =  class=”string”>”)  
  2. {  
  3.     //配置分页信息  
  4.     $config[ class=”string”>’base_url’] = site_url( class=”string”>’admin/goodstype/index’);  
  5.     //获取数据库总条数  
  6.     $config[ class=”string”>’total_rows’] =  class=”vars”>$this->goodstype_model->count_goodstype();  
  7.     //每页显示条数  
  8.     $config[ class=”string”>’per_page’] = 2;  
  9.     //页码参数位置  
  10.     $config[ class=”string”>’uri_segment’] = 4;  
  11.   
  12.     //自定义分页连接  
  13.     $config[ class=”string”>’first_link’] =  class=”string”>’首页’;  
  14.     $config[ class=”string”>’last_link’] =  class=”string”>’尾页’;  
  15.     $config[ class=”string”>’prev_link’] =  class=”string”>’上一页’;  
  16.     $config[ class=”string”>’next_link’] =  class=”string”>’下一页’;  
  17.   
  18.     //初始化分类页  
  19.     $this->pagination->initialize( class=”vars”>$config);  
  20.     //生成分页信息  
  21.      class=”comment”>//可以输出查看结果是一律失误html字符串  
  22.     $data[ class=”string”>’pageinfo’] =  class=”vars”>$this->pagination->create_links();  
  23.     $limit = $config[ class=”string”>’per_page’];  
  24.     $data[ class=”string”>’goodstypes’] =  class=”vars”>$this->goodstype_model->list_goodstype( class=”vars”>$limit, class=”vars”>$offset);  
  25.     $this->load->view( class=”string”>’goods_type_list.html’, class=”vars”>$data);  
  26. }   

自家是故pycharm工具来创造django项目。Pycharm是python的编辑器。相当好用,推荐大家使用。创建界面如下,选择new
project然后再度择Django,输入Django工程的门道

  1. <?php  
  2.   
  3. /** 
  4.  * ======================================= 
  5.  * Created by Pocket Knife Technology. 
  6.  * User: ZhiHua_W 
  7.  * Date: 2016/11/08 0041 
  8.  * Time: 下午 4:14 
  9.  * Project: CodeIgniter框架—源码分析 
  10.  * Power: Analysis for Pagination.php 
  11.  * ======================================= 
  12.  */  
  13.   
  14. defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);  
  15.   
  16. /** 
  17.  * 用于转移分页连接 
  18.  */  
  19. class CI_Pagination  
  20. {  
  21.     //每次访的url地址  
  22.     protected $base_url = ”;  
  23.     //给路径上加一个自定义前缀,前缀位于偏移段的先头  
  24.     protected $prefix = ”;  
  25.     //给路径上加一个自定义后缀,后缀位于偏移段的后。  
  26.     protected $suffix = ”;  
  27.     //这个数字代表您待开分页的数的母公司多次。通常是数值是公查询数据库得到的数码总量。  
  28.     protected $total_rows = 0;  
  29.     //放在你手上页码的前和后的“数字”链接的数据。  
  30.     //比方说值为 2 就见面于每单放置两只数字链接,就如此页顶端的演示链接那样。  
  31.     protected $num_links = 2;  
  32.     //这个数字代表每个页面中企展示的多寡,在地方的不胜例子中,每页显示 10 单种类。  
  33.     public $per_page = 10;  
  34.     //当前页  
  35.     public $cur_page = 0;  
  36.     //默认分页的 URL 中显得的凡若眼前正由哪条记下开始分页,  
  37.     //如果你盼显示实际的页数,将该参数设置为 TRUE 。  
  38.     protected $use_page_numbers = FALSE;  
  39.     //首页,左边第一单链接显示的文件,如果您免思展示该链接,将其安为 FALSE 。  
  40.     protected $first_link = ‘‹ First’;  
  41.     //下一样页,下一样页链接显示的文书,如果你免思量展示该链接,将该设置也 FALSE 。  
  42.     protected $next_link = FALSE;  
  43.     //下同样页,下同样页链接显示的文本,如果您免思展示该链接,将那个安装为 FALSE  
  44.     protected $prev_link = FALSE;  
  45.     //尾页,右边第一只链接显示的文本,如果您莫思展示该链接,将该设置为 FALSE 。  
  46.     protected $last_link = ‘Last ›’;  
  47.     //分页方法自动检测你 URI 的啊一样段落包含页数,如果您的状况不一致,你可判指定它  
  48.     protected $uri_segment = 4;  
  49.     //起始标签放在有结果的左手。  
  50.     //你可以标签中写任意的体裁等等  
  51.     //不过样式最好的还是采用分离之道写尽好,仅于当时边添加不同的class就足以了  
  52.     protected $full_tag_open = ‘<ul class=”pagination pagination-sm”>’;  
  53.     //结束标签放在有结果的下手。  
  54.     protected $full_tag_close = ‘</ul>’;  
  55.     //第一单链接的开端标签。  
  56.     protected $first_tag_open = ‘<li>’;  
  57.     //第一独链接的结标签。  
  58.     protected $first_tag_close = ‘</li>’;  
  59.     //最后一个链接的起始标签。  
  60.     protected $last_tag_open = ‘<li>’;  
  61.     //最后一个链接的结束标签。  
  62.     protected $last_tag_close = ‘</li>’;  
  63.     //首页url  
  64.     protected $first_url = ”;  
  65.     //当前页链接的苗子标签。  
  66.     protected $cur_tag_open = ‘<li class=”active”><a href=”javascript:;”>’;  
  67.     //当前页链接的竣工标签。  
  68.     protected $cur_tag_close = ‘</a></li>’;  
  69.     //下同样页链接的序幕标签。  
  70.     protected $next_tag_open = ‘<li>’;  
  71.     //下一致页链接的终结标签。  
  72.     protected $next_tag_close = ‘</li>’;  
  73.     //上平等页链接的原初标签。  
  74.     protected $prev_tag_open = ‘<li>’;  
  75.     //上同页链接的结标签。  
  76.     protected $prev_tag_close = ‘</li>’;  
  77.     //数字链接的发端标签。  
  78.     protected $num_tag_open = ‘<li>’;  
  79.     //数字链接的了标签。  
  80.     protected $num_tag_close = ‘</li>’;  
  81.     //默认情况下,分页类假设你采取 URI 段 ,并像这么构造你的链接:  
  82.     //http://example.com/index.php/test/page/20  
  83.     protected $page_query_string = FALSE;  
  84.     protected $query_string_segment = ‘per_page’;  
  85.     //如果你免思量展示数字链接(例如你只有想展示上同一页和下一样页链接),你可将脚的代码TRUE改为FALSE来阻止她显示  
  86.     protected $display_pages = TRUE;  
  87.     //如果你想也分页类生成的每个链接添加额外之属性  
  88.     protected $_attributes = ”;  
  89.     //连接类型  
  90.     protected $_link_types = array();  
  91.     //默认情况下而的询问字符串参数会让忽视,将这个参数设置为 TRUE ,  
  92.     //将会将查询字符串参数上加到 URI 分段的背后与 URL 后缀的前方  
  93.     protected $reuse_query_string = FALSE;  
  94.     //当该参数设置为 TRUE 时,会动用 application/config/config.php  
  95.     //配置文件被定义之 $config[‘url_suffix’] 参数 重写 $config[‘suffix’] 的值  
  96.     protected $use_global_url_suffix = FALSE;  
  97.     //给数字加属性  
  98.     protected $data_page_attr = ‘data-ci-pagination-page’;  
  99.     //CI Singleton  
  100.     protected $CI;  
  101.   
  102.     /** 
  103.      * 构造函数->处理数据 
  104.      * 在应用加载此类之后,设置有数额例如: 
  105.      * //配置分页信息 
  106.      * $config[‘base_url’] = site_url(‘admin/goodstype/index’); 
  107.      * $config[‘total_rows’] = $this->goodstype_model->count_goodstype(); 
  108.      * $config[‘per_page’] = 2; 
  109.      * $config[‘uri_segment’] = 4; 
  110.      * 
  111.      * //自定义分页连接 
  112.      * $config[‘first_link’] = ‘首页’; 
  113.      * $config[‘last_link’] = ‘尾页’; 
  114.      * $config[‘prev_link’] = ‘上一页’; 
  115.      * $config[‘next_link’] = ‘下一页’; 
  116.      */  
  117.     public function __construct($params = array())  
  118.     {  
  119.         $this->CI = &get_instance();  
  120.         $this->CI->load->language(‘pagination’);  
  121.         foreach (array(‘first_link’, ‘next_link’, ‘prev_link’, ‘last_link’) as $key) {  
  122.             if (($val = $this->CI->lang->line(‘pagination_’ . $key)) !== FALSE) {  
  123.                 $this->$key = $val;  
  124.             }  
  125.         }  
  126.         $this->initialize($params);  
  127.         log_message(‘info’, ‘Pagination Class Initialized’);  
  128.     }  
  129.   
  130.     /** 
  131.      * 初始化 
  132.      * 功能雷同是处理参数 
  133.      */  
  134.     public function initialize(array $params = array())  
  135.     {  
  136.         isset($params[‘attributes’]) OR $params[‘attributes’] = array();  
  137.         if (is_array($params[‘attributes’])) {  
  138.             $this->_parse_attributes($params[‘attributes’]);  
  139.             unset($params[‘attributes’]);  
  140.         }  
  141.   
  142.         if (isset($params[‘anchor_class’])) {  
  143.             empty($params[‘anchor_class’]) OR $attributes[‘class’] = $params[‘anchor_class’];  
  144.             unset($params[‘anchor_class’]);  
  145.         }  
  146.   
  147.         foreach ($params as $key => $val) {  
  148.             if (property_exists($this, $key)) {  
  149.                 $this->$key = $val;  
  150.             }  
  151.         }  
  152.   
  153.         if ($this->CI->config->item(‘enable_query_strings’) === TRUE) {  
  154.             $this->page_query_string = TRUE;  
  155.         }  
  156.   
  157.         if ($this->use_global_url_suffix === TRUE) {  
  158.             $this->suffix = $this->CI->config->item(‘url_suffix’);  
  159.         }  
  160.   
  161.         return $this;  
  162.     }  
  163.   
  164.     /** 
  165.      * 创建分页连接 
  166.      * 这个就算是我们用条用到的了,这个函数最后会返回一差html代码, 
  167.      * 而我辈就用随即段html代码在前台显示即可。 
  168.      * CI框架的分页类和TP框架的分页类有及时明显的别。 
  169.      * CI仅是提供分页显示,并无提供其及数据库交互的效益。 
  170.      * 这吗便给我们得以对其开展100%之定制。 
  171.      * 非常之精工细作方便。 
  172.      */  
  173.     public function create_links()  
  174.     {  
  175.         //我们于初始化的时段必须要发出数据到底条数和每页显示条数  
  176.         if ($this->total_rows == 0 OR $this->per_page == 0) {  
  177.             return ”;  
  178.         }  
  179.         //计算页面总数  
  180.         $num_pages = (int)ceil($this->total_rows / $this->per_page);  
  181.         //如果只出一样页,则直接然会空字符串  
  182.         if ($num_pages === 1) {  
  183.             return ”;  
  184.         }  
  185.         //检查用户定义之链接数  
  186.         $this->num_links = (int)$this->num_links;  
  187.         if ($this->num_links < 0) {  
  188.             show_error(‘Your number of links must be a non-negative number.’);  
  189.         }  
  190.   
  191.         //保留任何现有的询问字符串项目。  
  192.         //注:与另其它查询字符串选项无关。  
  193.         if ($this->reuse_query_string === TRUE) {  
  194.             $get = $this->CI->input->get();  
  195.             unset($get[‘c’], $get[‘m’], $get[$this->query_string_segment]);  
  196.         } else {  
  197.             $get = array();  
  198.         }  
  199.   
  200.         //处理我们的根基网址与第一独网址  
  201.         $base_url = trim($this->base_url);  
  202.         $first_url = $this->first_url;  
  203.         $query_string = ”;  
  204.         $query_string_sep = (strpos($base_url, ‘?’) === FALSE) ? ‘?’ : ‘&’;  
  205.         if ($this->page_query_string === TRUE) {  
  206.             //如果自定义first_url还无被确定,我们见面起base_url创建一个网页,但没项目。  
  207.             if ($first_url === ”) {  
  208.                 $first_url = $base_url;  
  209.                 if (!empty($get)) {  
  210.                     $first_url .= $query_string_sep . http_build_query($get);  
  211.                 }  
  212.             }  
  213.             $base_url .= $query_string_sep . http_build_query(array_merge($get, array($this->query_string_segment => ”)));  
  214.         } else {  
  215.             //生成我们保留的查询字符串,以在页面号以后增加。  
  216.             if (!empty($get)) {  
  217.                 $query_string = $query_string_sep . http_build_query($get);  
  218.                 $this->suffix .= $query_string;  
  219.             }  
  220.             if ($this->reuse_query_string === TRUE && ($base_query_pos = strpos($base_url, ‘?’)) !== FALSE) {  
  221.                 $base_url = substr($base_url, 0, $base_query_pos);  
  222.             }  
  223.             if ($first_url === ”) {  
  224.                 $first_url = $base_url . $query_string;  
  225.             }  
  226.   
  227.             $base_url = rtrim($base_url, ‘/’) . ‘/’;  
  228.         }  
  229.   
  230.         //确定当前页号。  
  231.         $base_page = ($this->use_page_numbers) ? 1 : 0;  
  232.         //判断我们是不是动查询字符串  
  233.         if ($this->page_query_string === TRUE) {  
  234.             $this->cur_page = $this->CI->input->get($this->query_string_segment);  
  235.         } elseif (empty($this->cur_page)) {  
  236.             //如果uri_segment一个从未有过叫定义,默认的结尾一个段落的数字。  
  237.             if ($this->uri_segment === 0) {  
  238.                 $this->uri_segment = count($this->CI->uri->segment_array());  
  239.             }  
  240.             $this->cur_page = $this->CI->uri->segment($this->uri_segment);  
  241.             //从该段中删去任何指定的前缀/后缀。  
  242.             if ($this->prefix !== ” OR $this->suffix !== ”) {  
  243.                 $this->cur_page = str_replace(array($this->prefix, $this->suffix), ”, $this->cur_page);  
  244.             }  
  245.         } else {  
  246.             $this->cur_page = (string)$this->cur_page;  
  247.         }  
  248.         if (!ctype_digit($this->cur_page) OR ($this->use_page_numbers && (int)$this->cur_page === 0)) {  
  249.             $this->cur_page = $base_page;  
  250.         } else {  
  251.             //确保我们运用的凡比后的整数。  
  252.             $this->cur_page = (int)$this->cur_page;  
  253.         }  
  254.         if ($this->use_page_numbers) {  
  255.             if ($this->cur_page > $num_pages) {  
  256.                 $this->cur_page = $num_pages;  
  257.             }  
  258.         } elseif ($this->cur_page > $this->total_rows) {  
  259.             $this->cur_page = ($num_pages – 1) * $this->per_page;  
  260.         }  
  261.   
  262.         $uri_page_number = $this->cur_page;  
  263.         //如果我们下的凡偏移量而未是页面号,将它们换为一个页面号,  
  264.         //这样咱们便足以转周围的数字链接了。  
  265.         if (!$this->use_page_numbers) {  
  266.             $this->cur_page = (int)floor(($this->cur_page / $this->per_page) + 1);  
  267.         }  
  268.   
  269.         //计算起和终止之数字。这些决定开始与了结数字链接的数目。  
  270.         $start = (($this->cur_page – $this->num_links) > 0) ? $this->cur_page – ($this->num_links – 1) : 1;  
  271.         $end = (($this->cur_page + $this->num_links) < $num_pages) ? $this->cur_page + $this->num_links : $num_pages;  
  272.   
  273.         //这个变量就是终极回来的字符串  
  274.         $output = ”;  
  275.   
  276.         //生成篇页链接  
  277.         if ($this->first_link !== FALSE && $this->cur_page > ($this->num_links + 1 + !$this->num_links)) {  
  278.             //为html代码添加设置的js属性  
  279.             $attributes = sprintf(‘%s %s=”%d”‘, $this->_attributes, $this->data_page_attr, 1);  
  280.             $output .= $this->first_tag_open . ‘<a href=”‘ . $first_url . ‘”‘ . $attributes . $this->_attr_rel(‘start’) . ‘>’ . $this->first_link . ‘</a>’ . $this->first_tag_close;  
  281.         }  
  282.   
  283.         // 生成达同页链接  
  284.         //我个人感觉生成上一样页的斯连续没有因此,我们自己已经发生了同附近之页面总是  
  285.         //故而上一页同生一样页在我看来没有就此处,我一般还是用此段和生同样页都目不转睛掉  
  286.         if ($this->prev_link !== FALSE && $this->cur_page !== 1) {  
  287.             $i = ($this->use_page_numbers) ? $uri_page_number – 1 : $uri_page_number – $this->per_page;  
  288.             $attributes = sprintf(‘%s %s=”%d”‘, $this->_attributes, $this->data_page_attr, ($this->cur_page – 1));  
  289.             if ($i === $base_page) {  
  290.                 $output .= $this->prev_tag_open . ‘<a href=”‘ . $first_url . ‘”‘ . $attributes . $this->_attr_rel(‘prev’) . ‘>’ . $this->prev_link . ‘</a>’ . $this->prev_tag_close;  
  291.             } else {  
  292.                 $append = $this->prefix . $i . $this->suffix;  
  293.                 $output .= $this->prev_tag_open . ‘<a href=”‘ . $base_url . $append . ‘”‘ . $attributes . $this->_attr_rel(‘prev’) . ‘>’ . $this->prev_link . ‘</a>’ . $this->prev_tag_close;  
  294.             }  
  295.         }  
  296.         //渲染页面  
  297.         //也便是用您设置的所欲添加的html标签代码,属性,都被加上  
  298.         if ($this->display_pages !== FALSE) {  
  299.             for ($loop = $start – 1; $loop <= $end; $loop++) {  
  300.                 $i = ($this->use_page_numbers) ? $loop : ($loop * $this->per_page) – $this->per_page;  
  301.                 $attributes = sprintf(‘%s %s=”%d”‘, $this->_attributes, $this->data_page_attr, $loop);  
  302.                 if ($i >= $base_page) {  
  303.                     if ($this->cur_page === $loop) {  
  304.                         $output .= $this->cur_tag_open . $loop . $this->cur_tag_close;  
  305.                     } elseif ($i === $base_page) {  
  306.                         $output .= $this->num_tag_open . ‘<a href=”‘ . $first_url . ‘”‘ . $attributes . $this->_attr_rel(‘start’) . ‘>’ . $loop . ‘</a>’ . $this->num_tag_close;  
  307.                     } else {  
  308.                         $append = $this->prefix . $i . $this->suffix;  
  309.                         $output .= $this->num_tag_open . ‘<a href=”‘ . $base_url . $append . ‘”‘ . $attributes . ‘>’ . $loop . ‘</a>’ . $this->num_tag_close;  
  310.                     }  
  311.                 }  
  312.             }  
  313.         }  
  314.         //生成下一样页连接  
  315.         //不多说  
  316.         if ($this->next_link !== FALSE && $this->cur_page < $num_pages) {  
  317.             $i = ($this->use_page_numbers) ? $this->cur_page + 1 : $this->cur_page * $this->per_page;  
  318.             $attributes = sprintf(‘%s %s=”%d”‘, $this->_attributes, $this->data_page_attr, $this->cur_page + 1);  
  319.             $output .= $this->next_tag_open . ‘<a href=”‘ . $base_url . $this->prefix . $i . $this->suffix . ‘”‘ . $attributes . $this->_attr_rel(‘next’) . ‘>’ . $this->next_link . ‘</a>’ . $this->next_tag_close;  
  320.         }  
  321.         //生成最后一页(尾页)连接  
  322.         if ($this->last_link !== FALSE && ($this->cur_page + $this->num_links + !$this->num_links) < $num_pages) {  
  323.             $i = ($this->use_page_numbers) ? $num_pages : ($num_pages * $this->per_page) – $this->per_page;  
  324.             $attributes = sprintf(‘%s %s=”%d”‘, $this->_attributes, $this->data_page_attr, $num_pages);  
  325.             $output .= $this->last_tag_open . ‘<a href=”‘ . $base_url . $this->prefix . $i . $this->suffix . ‘”‘ . $attributes . ‘>’ . $this->last_link . ‘</a>’ . $this->last_tag_close;  
  326.         }  
  327.         //将变的结果html代码字符串进行处理  
  328.         $output = preg_replace(‘#([^:”])//+#’, ‘\\1/’, $output);  
  329.         //如果存在添加封装HTML  
  330.         return $this->full_tag_open . $output . $this->full_tag_close;  
  331.     }  
  332.   
  333.     /** 
  334.      * 解析属性 
  335.      */  
  336.     protected function _parse_attributes($attributes)  
  337.     {  
  338.         isset($attributes[‘rel’]) OR $attributes[‘rel’] = TRUE;  
  339.         $this->_link_types = ($attributes[‘rel’]) ? array(‘start’ => ‘start’, ‘prev’ => ‘prev’, ‘next’ => ‘next’) : array();  
  340.         unset($attributes[‘rel’]);  
  341.         $this->_attributes = ”;  
  342.         foreach ($attributes as $key => $value) {  
  343.             $this->_attributes .= ‘ ‘ . $key . ‘=”‘ . $value . ‘”‘;  
  344.         }  
  345.     }  
  346.   
  347.     /** 
  348.      * 添加“关系”属性 
  349.      */  
  350.     protected function _attr_rel($type)  
  351.     {  
  352.         if (isset($this->_link_types[$type])) {  
  353.             unset($this->_link_types[$type]);  
  354.             return ‘ rel=”‘ . $type . ‘”‘;  
  355.         }  
  356.         return ”;  
  357.     }  
  358.   
  359. }  

在每个Django项目受到得以创造多只app应用,比如邮件,网页等不同的行使。所有的app应用都共享项目资源

注:其中有有代码标签是我自己加上的,其变量表示与源码有点不雷同,大家看的时候如果专注!后面更写这些博文,一般就不曾呀规律的,一般还是因此到十分酒吧那个写一总体。

在site_prj应用中之views.py添加正如原型函数

 

创办好后收获如下界面。其中setting是主工程的个设置文件。各类路径和模块引用都当此文件被展开设置,后面会持续介绍。url是网页网址链接和继端函数链接的文书。通俗点就是网页中输入的网址过及时里面的配置索引到相应的处理函数。也可称呼路由于文件。 
Templates文件里放于定义的html网页。Manage.py是Django的管理主程序。

 

<h1 style="background-color:antiquewhite;color:black;"/>hello Django</h1>

 

Views.py中更新如下,代表引用index.html

def index(request):

    return render(request,"index.html")

可以看到界面如下所示:

 

from django.shortcuts import render

from django.shortcuts import HttpResponse

# Create your views here.

#打开网页的时候会自动跳转到index处理,在网页上输出Hello,Django

def index(request):

    return HttpResponse("hello,Django")

        最后贴一下CI框架整个分页类Pagination.php文件的源代码(注释版):

下一场点击绿色按钮,则开启动工程。出现如下错误,有报错,提示Errno 10013.
意思是端口冲突。端口是装的8000,因为和酷狗冲突了。端口改化8001晚启动OK。

咱们啊可以从定义网页:

 

图片 1

图片 2

图片 3

丰富网页代码如下:

图片 4

 

Host中填入127.0.0.1, port填入8000

 

图片 5

每当网页中输入127.0.0.1:8001/index 产出如下界面

图片 6

于template中开创一个index网页

图片 7

图片 8

装了晚图面如下:

图片 9

姓名Model View
Controller,是范(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用同一栽业务逻辑、数据、界面显示分离的道组织代码,将业务逻辑聚集到一个部件里面,在改良与个性化定制界面及用户交互的以,不欲再行编写工作逻辑。

通俗点说,其实就是是将不同功效的文本放到不同目录下,然后通过代码代用将各个模块组合起来。这样的利益虽是松耦合。具体每模块的打算通过创建工程来介绍

Django项目创造:

先点击Edit Configuration

今开修一个简的路由;
在url.py的文本下面新增同长条总长
**
from django.conf.urls import url from django.contrib import admin from site_prj import views    #内需事先涌入views函数
urlpatterns = [
    url(
r’^admin/’, admin.site.urls),  #默认路由
    url(
r’index/’**,views.index), 
#补加相同漫漫路由,意义如下:当访问index这个网页的时光,则交由views.index函数处理
]

图片 10

没有错了。正常启动

 

图片 11

脚是开行工程

Django采用MVC架构,百度百科介绍如下:

图片 12

图片 13