{"id":18441578,"url":"https://github.com/zokis/auladjango","last_synced_at":"2025-04-14T17:56:21.487Z","repository":{"id":22939333,"uuid":"26288628","full_name":"zokis/auladjango","owner":"zokis","description":null,"archived":false,"fork":false,"pushed_at":"2014-11-17T12:49:19.000Z","size":208,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-16T11:27:42.711Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zokis.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-06T20:31:16.000Z","updated_at":"2014-11-06T20:32:53.000Z","dependencies_parsed_at":"2022-08-21T17:10:49.549Z","dependency_job_id":null,"html_url":"https://github.com/zokis/auladjango","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zokis%2Fauladjango","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zokis%2Fauladjango/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zokis%2Fauladjango/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zokis%2Fauladjango/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zokis","download_url":"https://codeload.github.com/zokis/auladjango/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248932680,"owners_count":21185369,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T06:38:34.722Z","updated_at":"2025-04-14T17:56:21.457Z","avatar_url":"https://github.com/zokis.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"Instalação\n========\n\nPython 2.7\n----------\n\nEntre em https://www.python.org/downloads/ e faça o Download do python 2.7.8\n\nInstale em `C:\\Python27`\n\nPadrão windows: Next.. Next.. Netx.. Ok.. Ok.. Finish..\n\nAdicionar ao Path do Windows:\n\nPressione:\nwindows+Pause\n\nVá em:\n\n* Configurações avançadas do Sistema\n* Variáveis de Ambiente\n* Encontre o Path em Variáveis do sistema\n* Editar...\n\nColoque ao final a string:\n```\n\";C:\\Python27;C:\\Python27\\Scripts;\"\n```\n\nOk.. Ok.. Ok..\n\nSetupTools\n----------\n\nSalve a URL https://bootstrap.pypa.io/ez_setup.py como \"ez_setup.py\"\n\nAbra o CMD\n\nvá na pasta onde se encontra o arquivo e execute:\n\n```bash\npython ez_setup.py\n```\n\nZZzzZzzzZZzzz\n\nDjango 1.7\n----------\n\nFaça o Download do Django:\n\nhttps://www.djangoproject.com/download/1.7.1/tarball/\n\n\nDescompacte o Django em qualquer pasta\n\nAbra o CMD entre na pasta descompactada do Django e execute:\n\n```bash\npython setup.py install\n```\nzzzzZZzzzz\n\nAdicionar o django-admin.py ao path\n\nExecute os mesmo passos para que foram feitos para executar o python ao path, mas adicione a string:\n\n```\n\";C:\\Python27\\Lib\\site-packeges\\Django\\bin\"\n```\n\npara testar se funcionou tente executar no CMD:\n\n```bash\ndjango-admin\n```\n\n\nTestar se Funcionou\n-------------------\n\nExecute no CMD o python e tente importar o django\n\n```python\nimport django\n```\n\n\nCriar o Projeto\n===============\n\nCrie uma pasta em `C:\\` com o nome `django_contatos`\n\nAbra o CMD e entre na pasta `cd C:\\django_contatos` e execute:\n```bash\ndjango-admin startproject contatos\n```\n\nPara testar se o projeto esta funcionando entre na pasta `contatos` entro da pasta `django_contatos` pelo CMD e execute:\n\n```python\npython manage.py runserver\n```\n\nCriar a app Principal do Sistema\n==========================\n\nNo CMD entre na pasta `C:\\django_contatos\\contatos\\contatos` e execute:\n\n```bash\ndjango-admin startapp core\n```\n\nAbra o arquivo `settings.py` com qualquer editor de texto e adicione a string `'contatos.core'` ao `INSTALLED_APPS`\n\n\nDefinir os Modelos\n================\n\nAbra o aquivo `models.py` e crie os Modelos:\n\n```python\nclass CategoriaEmpresa(models.Model):\n    categoria = models.CharField(max_length=100)\n\n    def __unicode__(self):\n        return self.categoria\n\n\nclass Empresa(models.Model):\n    nome = models.CharField(verbose_name=u'Nome', max_length=100)\n    telefone = models.CharField(verbose_name=u'Telefone', max_length=20)\n    falar_com = models.CharField(u'Falar com', max_length=125)\n    categoria = models.ForeignKey(CategoriaEmpresa, null=True, blank=True)\n\n    logradouro = models.CharField(u'Logradouro', max_length=255, null=True, blank=True)\n    numero = models.CharField(u'número', max_length=25, null=True, blank=True)\n    complemento = models.CharField(u'complemento', max_length=200, null=True, blank=True)\n    bairro = models.CharField(u'bairro', max_length=200, null=True, blank=True)\n    municipio = models.CharField(u'Município', max_length=200, null=True, blank=True)\n    cep = models.CharField(u'CEP', max_length=10, null=True, blank=True)\n\n    site = models.URLField(null=True, blank=True)\n\n    def __unicode__(self):\n        return self.nome\n```\n\nNo CMD vá até a raiz do projeto (pasta onde está o arquivo `manage.py`) e execute:\n\n```python\npython manage.py syncdb\n```\n\nEle irá perguntar se deseja criar um usuário digite: `yes`\n\n\nVerficar se criou um arquivo chamado db.sqlite3 - Banco de dados, o nome é o definido na seguinte configuração do settings.py:\n```python\nDATABASES = {\n    'default': {\n        'ENGINE': 'django.db.backends.sqlite3',\n        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),\n    }\n}\n```\n\nCriando a Primeira View\n=======================\n\nAbra o arquivo `views.py` e crie as Views:\n\n```python\n# coding: utf-8\nfrom django.views.generic import TemplateView\n\nindex = TemplateView.as_view(template_name='index.html')\n```\n\nCriando as URLs\n=============\n\nAbra o arquivo `urls.py` e deixe-o igual a este:\n```python\nfrom django.conf.urls import patterns, url\n\n\nurlpatterns = patterns(\n    '',\n    url(r'^$', 'contatos.core.views.index', name=\"index\"),\n)\n```\n\nCriando o Template Inicial\n==========================\n\nNa pasta `core` crie uma pasta chamada `templates` e dentro dela um arquivo chamado `index.html` com o conteúdo:\n```html\n\u003chtml\u003e\n    \u003chead\u003e\n        \u003ctitle\u003eInício\u003c/title\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        Olá Mundo!!!\n    \u003c/body\u003e\n\u003c/html\u003e\n```\n\nCom um editor de texto adicione no `settings.py`:\n```python\nTEMPLATE_LOADERS = (\n    'django.template.loaders.filesystem.Loader',\n    'django.template.loaders.app_directories.Loader',\n)\n```\n\nCriando as views para a Categoria de Empresa\n=====================================\n\nAdicione ao arquivo `views.py`\n```python\nfrom django.views.generic.edit import CreateView, DeleteView, UpdateView\nfrom django.views.generic.list import ListView\nfrom django.core.urlresolvers import reverse_lazy\nfrom django.forms.models import modelform_factory\n\nfrom contatos.core.models import CategoriaEmpresa\n\nCategoriaEmpresaForm = modelform_factory(CategoriaEmpresa)\n\ncategoria_create = CreateView.as_view(\n    model=CategoriaEmpresa,\n    success_url=reverse_lazy('categoria_list'),\n    form_class=CategoriaEmpresaForm\n)\ncategoria_delete = DeleteView.as_view(\n    template_name='confirm_delete.html',\n    model=CategoriaEmpresa,\n    success_url=reverse_lazy('categoria_list')\n)\ncategoria_list = ListView.as_view(\n    model=CategoriaEmpresa,\n    paginate_by=15\n)\ncategoria_update = UpdateView.as_view(\n    model=CategoriaEmpresa,\n    success_url=reverse_lazy('categoria_list')\n)\n```\n\nCriando as URLS para a Categoria de Empresa\n=====================================\n\nAdicione ao arquivo `urls.py` as urls:\n```python\n# Categoria\nurl(r'^list/categoria/$', 'contatos.core.views.categoria_list', name=\"categoria_list\"),\nurl(r'^create/categoria/$', 'contatos.core.views.categoria_create', name=\"categoria_form\"),\nurl(r'^update/categoria/(?P\u003cpk\u003e\\d+)/$', 'contatos.core.views.categoria_update', name=\"categoria_form\"),\nurl(r'^delete/categoria/(?P\u003cpk\u003e\\d+)/$', 'contatos.core.views.categoria_delete', name=\"categoria_delete\"),\n```\n\nCriando os Templates de Categoria de Empresa\n======================================\n\nNa pasta `templates` cria um arquivo chamado `confirm_delete.html`:\n```html\n\u003chtml\u003e\n    \u003chead\u003e\n        \u003ctitle\u003eDeletar\u003c/title\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        \u003cform method=\"post\"\u003e\n            {% csrf_token %}\n            \u003ch4\u003eVocê tem certeza que deseja deletar \"{{ object }}\"?\u003c/h4\u003e\n            \u003cinput type=\"submit\" value=\"Confirmar\" class=\"btn btn-danger\" /\u003e\n        \u003c/form\u003e\n    \u003c/body\u003e\n\u003c/html\u003e\n```\n\n\nNa pasta `templates` cria uma pasta chamada `core` dentro dela crie os arquivos:\n`categoriaempresa_form.html`\n```html\n\u003chtml\u003e\n    \u003chead\u003e\n        \u003ctitle\u003eFormulário\u003c/title\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        \u003cform method=\"POST\"\u003e\n            {% csrf_token %}\n                {{ form.as_p }}\n                \u003cbutton type=\"submit\" \u003e\n                {% if not form.instance.pk %}\n                    Cadastrar\n                {% else %}\n                    Alterar\n                {% endif %}\n                \u003c/button\u003e\n                \u003cinput type=\"reset\" value=\"Cancelar\" /\u003e\n            \u003c/div\u003e\n        \u003c/form\u003e\n    \u003c/body\u003e\n\u003c/html\u003e\n```\n`categoriaempresa_list.html`\n```html\n\u003chtml\u003e\n    \u003chead\u003e\n        \u003ctitle\u003eListagem\u003c/title\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        \u003ctable\u003e\n            \u003cthead\u003e\n                \u003ctr\u003e\n                    \u003cth\u003ecategoria\u003c/th\u003e\n                    \u003cth style=\"width: 60px;\"\u003edeletar\u003c/th\u003e\n                \u003c/tr\u003e\n            \u003c/thead\u003e\n            \u003ctbody\u003e\n                {% for categoriaempresa in object_list %}\n                \u003ctr\u003e\n                    \u003ctd\u003e\u003ca href=\"{% url 'categoria_form' categoriaempresa.pk %}\"\u003e{{ categoriaempresa.categoria }}\u003c/a\u003e\u003c/td\u003e\n                    \u003ctd\u003e\n                        \u003ca href=\"{% url 'categoria_delete' categoriaempresa.pk %}\" class=\"btn btn-small btn-danger\"\u003e\n                            X\n                        \u003c/a\u003e\n                    \u003c/td\u003e\n                \u003c/tr\u003e\n                {% endfor %}\n            \u003c/tbody\u003e\n        \u003c/table\u003e\n        \u003cdiv class=\"pagination\"\u003e\n            \u003cspan class=\"step-links\"\u003e\n                {% if page_obj.has_previous %}\n                    \u003ca href=\"?page={{ page_obj.previous_page_number }}\"\u003eprevious\u003c/a\u003e\n                {% endif %}\n\n                \u003cspan class=\"current\"\u003e\n                    Página {{ page_obj.number }} de {{ page_obj.paginator.num_pages }}.\n                \u003c/span\u003e\n\n                {% if page_obj.has_next %}\n                    \u003ca href=\"?page={{ page_obj.next_page_number }}\"\u003enext\u003c/a\u003e\n                {% endif %}\n            \u003c/span\u003e\n        \u003c/div\u003e\n    \u003c/body\u003e\n\u003c/html\u003e\n```\n\nRepita os passos para o Modelo de Empresa\n===================================\n\nEditar o Formulário da Empresa\n==========================\n\nNa pasta `core` crie um arquivo chamado `forms.py` com o conteúdo:\n```python\n# coding: utf-8\n\nfrom django import forms\n\nfrom contatos.core.models import CategoriaEmpresa, Empresa\n\n\nclass EmpresaForm(forms.ModelForm):\n    categoria = forms.ModelChoiceField(\n        queryset=CategoriaEmpresa.objects.all().order_by('-categoria'),\n    )\n\n    class Meta:\n        model = Empresa\n\n```\n\nNo arquivo `views.py` importe o formulário recém criado:\n```python\nfrom contatos.core.forms import EmpresaForm\n```\n\nSubstitua o `EmpresaForm` antigo pelo novo e apague o antigo \n\nDeixando as Coisas Bonitas\n======================\n\nNa pasta `templates` crie um arquivo chamado `base.html` com o conteúdo:\n```html\n{% load staticfiles %}\n\u003chtml\u003e\n    \u003chead\u003e\n        \u003ctitle\u003e{% block title %}Início{% endblock %}\u003c/title\u003e\n    \u003c/head\u003e\n    \u003cbody\u003e\n        {% block content %}Olá Mundo!!!{% endblock %}\n    \u003c/body\u003e\n\u003c/html\u003e\n```\nAltere o conteúdo do arquivo `index.html` para:\n```html\n{% extends \"base.html\" %}\n```\n\nFaça o mesmo para todos os outros templates.\nExemplo `confirm_delete.html`:\n```html\n{% extends \"base.html\" %}\n\n{% block title %}\n    Deletar {{ object }}\n{% endblock %}\n\n{% block content %}\n\u003cform method=\"post\"\u003e\n    {% csrf_token %}\n    \u003ch4\u003eVocê tem certeza que deseja deletar \"{{ object }}\"?\u003c/h4\u003e\n    \u003cinput type=\"submit\" value=\"Confirmar\" class=\"btn btn-danger\" /\u003e\n\u003c/form\u003e\n{% endblock content %}\n```\n\nDentro da Pasta `core` crie uma pasta chamda `static` com uma pasta dentro chamda `css`\nAcesse http://bootswatch.com/flatly/bootstrap.min.css e salve o arquivo nessa pasta com o nome `bootstrap.min.css`\n\nAltere o arquivo base.html` para:\n```html\n{% load staticfiles %}\n\u003chtml\u003e\n    \u003chead\u003e\n        \u003ctitle\u003e{% block title %}Início{% endblock %}\u003c/title\u003e\n    \u003c/head\u003e\n    \u003clink rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"{% static 'css/bootstrap.min.css'%}\"\u003e\n    \u003cbody\u003e\n        \u003cnav class=\"navbar navbar-default\" role=\"navigation\"\u003e\n            \u003cdiv class=\"container-fluid\"\u003e\n                \u003cdiv class=\"navbar-header\"\u003e\n                    \u003cbutton type=\"button\" class=\"navbar-toggle collapsed\" data-toggle=\"collapse\" data-target=\"#bs-example-navbar-collapse-1\"\u003e\n                        \u003cspan class=\"sr-only\"\u003eToggle navigation\u003c/span\u003e\n                    \u003c/button\u003e\n                    \u003ca class=\"navbar-brand\" href=\"{% url 'index' %}\"\u003eInício\u003c/a\u003e\n                \u003c/div\u003e\n                \u003cdiv class=\"collapse navbar-collapse\"\u003e\n                    \u003cul class=\"nav navbar-nav\"\u003e\n                        \u003cli\u003e\u003ca href=\"{% url 'empresa_list' %}\"\u003eListagem de Empresas\u003c/a\u003e\u003c/li\u003e\n                        \u003cli\u003e\u003ca href=\"{% url 'categoria_list' %}\"\u003eListagem de Categorias de Empresas\u003c/a\u003e\u003c/li\u003e\n                    \u003c/ul\u003e\n                \u003c/div\u003e\n            \u003c/div\u003e\n        \u003c/nav\u003e\n        {% block content %}Olá Mundo!!!{% endblock %}\n    \u003c/body\u003e\n\u003c/html\u003e\n```\n\nPara criar botões de novo abra os templates de Listagem e adicionem um link:\n```html\n\u003ca href=\"{% url 'empresa_form' %}\" class=\"btn btn-primary\"\u003eNova Empresa\u003c/a\u003e\n```\nFaça a mesma coisa para Categoria de Empresa\n\nNos templates de listagem adicione as classes `\"table table-bordered table-striped\"` para as tabelas, ficando assim:\n```html\n...\n\u003ctable class=\"table table-bordered table-striped\"\u003e\n    ...\n\u003c/table\u003e\n...\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzokis%2Fauladjango","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzokis%2Fauladjango","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzokis%2Fauladjango/lists"}