Django nie uruchamia serwera przy złym kodzie

0

Witam, uczę się przykładów z tego kursu Django.

Jednak utknąłem na odcinku 12, dlatego że wpis:

url(r'^(?P<album_id>[0-9]+)/$', views.detail, name='detail'),

Nie włącza mi lokalnego serwera 127.0.0.1:8000. Odpala się jedynie jak zmienię na wpis:

url(r'^(?P<album_id>[0-9]+)/$', 'views.detail', name='detail'),

Jednak nadal występują błędy, Django mam wersja 1.9.5, Python 3.5.1.
To pokazuje konsola serwera:

url(r'^(?P<album_id>[0-9]+)/$', views.detail, name='detail'),
AttributeError: module 'music.views' has no attribute 'detail' 
0

Pokaż. kod.

0

kod urls.py

from django.conf.urls import url
from .import views


urlpatterns = [
    # /music/
    url(r'^$', views.index, name='index'),

    # /music/712/
    url(r'^(?P<album_id>[0-9]+)/$', views.detail, name='detail'),

]

kod views.py

from django.http import HttpResponse
from .models import Album

# Create your views here.
def index(request):
    all_albums = Album.objects.all()
    html = ''
    for album in all_albums:
        url = '/music/' + str(album.id) + '/'
        html += '<a href="' + url + '">' + album.album_title + '</a><br>'
        return HttpResponse(html)
    #return HttpResponse("<h1>Jest to aplikacja muzyczna strony głównej</h1>")

def details(request, album_id):
    return HttpResponse("<h2>Szczegóły dotyczące albumu id: " + str(album_id) + "</h2>")
0

jeśli masz odwołanie do funkcji views.detail
url(r'^(?P<album_id>[0-9]+)/$', views.detail, name='detail'),
to powinno być
def detail(request, album_id):
Używanie stringu "views.detail" jest niezalecanie, deprecated w wersji 1.8, a będzie usunięte w 1.10

0

Dzięki to pomogło. A jeszcze tylko zapytam jak zamienić ten kod:

<form action="." method="POST">
      {% csrf_token %}
      <input type="text" style="width: 1000px" name="tekst" />
      <input type="submit" style="width: 100px" value="Wyślij" />
	  </form>

na ten:

{% extends "czat/baza.html" %}

  {% block naglowek %}Wiadomości{% endblock %}

  {% block tresc %}

    <h2>Lista wiadomości:</h2>
    <ol>
      {% for wiadomosc in wiadomosci %}
      <li>
        <strong>{{ wiadomosc.autor.username }}</strong> ({{ wiadomosc.data_pub }}):
        <br /> {{ wiadomosc.tekst }}
        {% if wiadomosc.autor.username == user.username %}
          &bull; <a href="{% url 'czat:edytuj' wiadomosc.id %}">Edytuj</a>
          &bull; <a href="{% url 'czat:usun' wiadomosc.id %}">Usuń</a>
        {% endif %}
      </li>
      {% endfor %}
    </ol>
    <h2>Dodaj wiadomość:</h2>
    <form method="POST">
      {% csrf_token %}
      {{ form.as_p }}
      <button type="submit">Wyślij</button>
    </form>
  {% endblock %}

  {% block linki3 %}
    <p><a href="{% url 'czat:index' %}">Strona główna</a></p>
  {% endblock %}

    <link rel="stylesheet" href="czat/static/czat/css/main.css" type="text/css"/>

Chcę zmienić opcję:
<input type="text" style="width: 1000px" name="tekst" />
w tym drugim kodzie który robi to samo, czyli wydłużyć formularz wpisywanych wiadomości. Bez użycia css czy bootstrapa. Poprzez samo django jak w pierwszym załączonym kodzie, ale jakoś nie widzę w tym drugim kodzie tej opcji. Który wpis za to odpowiada, lub jak to dopisać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1