Pereiti prie turinio

meshkis

Nariai
  • Pranešimai

    55
  • Užsiregistravo

  • Lankėsi

  • Atsiliepimai

    0%

meshkis Pranešimai

  1. Sveiki, reikia pagalbos

     

    HTML`e yra meniu. Kiekvienas meniu punktas turi savo `id`. Paspaudus ant meniu punkto, `id` perduodamas į `views.py` ir ten apdorojamas.

     

    <a href="{% url es_app.views.vnz name=menu_id %}" title="{{ pavadinimas }}"> 
       <span>{{ pavadinimas }}</span>
    </a>

     

    Klausimas tame, kad taip perduodant 'id' jis matosi ir adreso eilutėje. Gaunasi: 'domenas/vnz/1/'. O man reikia, kad gautųsi: 'domenas/vnz/grazus_pavadinimas/'.

    Išanksto dėku.

  2. Normali ta firma pirkanglijoj. Nenoriu, kad pagalvotumėte, kad aš ją kišu ar reklamuoju, bet, kaip jau ankščiau rašiau, per du metus nebuvo kažkokių nesamonių. O pirkta Anglijoj buvo iš daug parduotuvių. Ir netgi, kai buvo pirkta per Ebay ir reikėjo nuvažiuoti pas pardavėja i namus ir paimti preke, susitarem ir viska padarė puikiai. Tokia mano patirtis dirbant su jais.

     

    P.S.: Patarimas, jei siunčiamas dūžtantis daiktas, tai geriau iškart perspėti vežėjus.

  3. Sveiki,

    Vėl aš stringu su tuo Django ORM.

     

    class Skyriai(models.Model):    
       pavadinimas = models.CharField(max_length=64)        
       pozicija = models.SmallIntegerField()
    
       def __unicode__(self):
           return u'%s %s' % (self.pavadinimas)

     

    class Tekstai(models.Model):
       skyrius = models.ForeignKey(Skyriai)    
       tekstas = WYSIWYGField(verbose_name='Aprašymas')
       data = models.DateField()
    
       def __unicode__(self):
           return u'%s %s %s' % (self.skyrius, self.tekstas, self.data)

     

    Taigi turiu tokius modelius. Man reikia elementarios užklausos, kuri išrinktų skyrius su visais jam priklausančiais tekstais.

    Apie šitą būdą žinau:

    b = Blog.objects.get(id=1)
    b.entry_set.all()

    Bet man reikia, kad viskas būtų vienoje užklausoje. T.y. man reikia, kad kažkur toliau programoje, aš galėčiau HTML`e, cikle iš masyvo ištraukinėti skyrius po vieną su visais jam priklausančiais tekstais. Su SQL aš tai lengvai padarau, bet norėtųsi naudoti Django galimybes.

  4. Sveikas,

    Padėkosiu ir aš už įdomią temą ir noriu užduoti keletą klausimų.

    Kad būtu aiškesni mano klausimai, pristatysiu savo projektą. Pagrindinis puslapis www.esmigracija.ru. Man reikia iškelti du vidinius puslapius (darau tai pirmą kartą):

    1. http://www.esmigracija.ru/vnz/vid_na_zitelstvo_v_litve/ su keywordais (вид на жительство в литве, внж в литве, литва внж, литва вид на жительство, получение вида на жительство в литве )

    2. http://www.esmigracija.ru/vnz/registracija_firm_v_litve/ su keywordais (бизнес в литве, фирма в литве, регистрация фирм в литве, регистрация фирмы в литве, открыть фирму в литве, зао в литве)

    Mane sudomino keli atsakymai, kuriuose buvo paminėta, kaip turėtų būti formuojami backlinkai straipsniuose. T. y., keywordas turėtų būti paminėtas puslapio title, aplink nuorodas, pirmoje ar antroje pastraipoje. Taigi, kyla klausimas, koks tada turėtų būti anchor text, nes, kaip suprantu, šiuo atveju branded keyword(www.esmigracija.ru) netinka?

    Dar sudomino pasakymas: „backlink'ai su branded anchor text (kosmetikatau) turėtų sudaryti didžiąją dalį viso portfelio. „

    Klausimas - kaip turėtų atrodyti portfelio dalys mano atveju?

    Įdėsiu pora pavyzdžių, kaip atrodo mano užsakyti straipsniai su talpinimu:

    http://vinprom.uz/chem-mozhet-pomoch-vam-kompanija-esmigracija.html

    http://www.danube-river.info/?p=5805

    http://evraziya.com/evrazia/484-preimuschestvo-v-poluchenii-vida-na-jitelstva-v-litve.htm

    Įdomu būtų sužinoti nuomonę, ar padaryta tinkamai.

    Būsiu dėkingas už racionalią kritiką ir pastabas.

  5. Windows shellas (cmd ar powershell – nežinau, kuris smagesnis). "python manage.py runserver". Aišku, reikia susitvarkyti PATH, gerai būtų turėti virtualenv ir t.t. :)

     

    Dėkui už atsakymą.

    Šį klausimą išsprendžiau suinstaliavęs Sublime Text 2 pluginą Terminal. Jį išsikvietęs paleidau serverį su komanda "python manage.py runserver 8000". Bet tai nėra patogiausias būdas.

    Iškilo klausimas, ar yra galimybė tai padaryti patogiau ir ar iš vis Sublime Text 2 yra naudojamas darbui su Django projektais?

  6. Sveiki

     

    Susidomėjau tekstiniu redaktoriumi Sublime Text 2. Norisi pamėginti su juo padirbėti, išbandyti. Bet niekaip neišeina paleisti Django projekto. Gal yra naudojančių ši redaktorių Django projektams ir paaiškins, kaip paleisti man savo projektą.

  7. Galiu pasidalinti savo patirtimi(pradėjau kažkur prieš pusantrų metų):

    Pirmiausia rekomenduočiau gerai susipažinti su HTML. Porą resursų galiu parekomenduoti ( http://htmlbook.ru/samhtml , http://www.w3schools.com/html/html5_intro.asp )

    Tada mokindamasis HTML prigriebi ir CSS ( http://www.w3schools.com/css/default.asp , http://htmlbook.ru/samcss ).

    Nu ir po to, kai jau HTML ir CSS kažkiek įvaldysi, pradėk domėtis jQuery ( http://learn.javascript.ru/ arba knyga Дэвид Флэнаган - Javascript. Подробное руководство, jei neskaitai rusiškai tai susirask en variantą http://www.amazon.com/jQuery-Action-Second-Bear-Bibeault/dp/1935182323 ).

    Dar vienas resursas http://uzdarbis.lt/t207186/python-programavimas/page__p__1879589__fromsearch__1#entry1879589. Gal nuspręsi programuoti Python/Django (bent jau man, tai įdomiau nei su Php).

    Visa tai išmokęs ir supratęs turėsi daugiau naudos, nei vartodamas Wordpress.

     

    p.s. Šitą knygą galiu pasidalinti, jei prireiks (Дэвид Флэнаган - Javascript. Подробное руководство)

     

    p.s.2 LT resursas http://kodai.manualai.lt/

  8. Sveiki,

    models.py:

    class Brandai(models.Model):
       brando_pav = models.CharField(max_length=64)
    
       def __unicode__(self):
           return u'%s' % (self.brando_pav)
    
    class Prekes(models.Model):
       brandas = models.IntegerField(max_length=3)
       pavadinimas = models.CharField(max_length=164)
       sablonas = models.IntegerField(max_length=3)
    
    class Sablonai(models.Model):
       sablono_pav = models.CharField(max_length=64)
    
       def __unicode__(self):
           return u'%s' % (self.sablono_pav)
    

    forms.py:

    class Nauja_preke(forms.Form):
       prekes_brandas = forms.ModelChoiceField(queryset=Brandai.objects.all().order_by('brando_pav'),
                                               widget=forms.Select(attrs={'class':'selector'}))
       prekes_sablonas = forms.ModelChoiceField(queryset=Sablonai.objects.all().order_by('sablono_pav'),
                                                widget=forms.Select(attrs={'class':'selector'}))
       prekes_pavadinimas = fields.CharField(max_length=164)

    html:

    {% block content %}
    <form method="POST" action="/preke_new/">{% csrf_token %}
    
       <table>
           {{ preke }}
       </table>
    
       <p>
           <input type="submit" value="Submit" />
       </p>
    
    </form>
    {% endblock %}
    

    views.py:

    def preke_new(request):
       if request.method == 'POST':
           nauja_preke = Nauja_preke(request.POST)
           if nauja_preke.is_valid():
               ivedimas_data = nauja_preke.cleaned_data
               a = Prekes(pavadinimas=ivedimas_data['prekes_pavadinimas'],
                          brandas=ivedimas_data['prekes_brandas'],
                          sablonas=ivedimas_data['prekes_sablonas'])
               a.save()
               return render_to_response('rezultatas.html', {'ivedimas_data': ivedimas_data},
                                          context_instance=RequestContext(request))
    
       return render_to_response('preke_new.html', {'preke': Nauja_preke()},
                                  context_instance=RequestContext(request))
    

    Niekaip nerandu būdo, kaip iš ModelChoiceField gauti brando ir šablono 'id'. Peržiūrėjęs iš 'POST' ateinančius kintamuosius, aš matau, kad kintamieji 'prekes_brandas' ir 'prekes_sablonas' turi tuos 'id', bet kai bandau juos įrašyti, jie kažkodėl pavirsta pavadinimais. Pridedu gaunamą rezultatą:

    {'prekes_brandas': <Brandai: Chicco>,
    'prekes_sablonas': <Sablonai: testinis>,
    'prekes_pavadinimas': u'prekes pavadinimas'}
    

  9. Na taip, su supratimu, sudėtinga. O jeigu panaudoti tokį būdą:

    Įrašius šablono pavadinimą į lentelę, iš karto daryti paiešką to šablono, ir tada sužinosiu jo id lentelėje. O tuomet jau galėsiu jį pridėti įrašinėdamas savybes? Ar toks būdas racionalus?

     

    Į šitą klausimą pačiam pavyko rasti atsakymą. Pasirodo, metodas save() po įvykdymo gauna atributą 'id', kuris ir yra unikalus įrašo numeris.

  10. Na taip, su supratimu, sudėtinga. O jeigu panaudoti tokį būdą:

    Įrašius šablono pavadinimą į lentelę, iš karto daryti paiešką to šablono, ir tada sužinosiu jo id lentelėje. O tuomet jau galėsiu jį pridėti įrašinėdamas savybes? Ar toks būdas racionalus?

     

    if sablonas_formset.is_valid() and savybes_formset.is_valid():
               sablonas_data = sablonas_formset.cleaned_data
               a = Sablonai(pavadinimas=sablonas_data[0]['sablono_pavadinimas'])
               a.save()
    
               sablono_id = darau paieška pagal 'sablono_pavadinimas'
    
               savybes_data = savybes_formset.cleaned_data
               for form_data in savybes_data:
                   a = Sablono_savybes(savybes_pav=form_data['sablono_savybe'],
                                       sablonas =  sablono_id ?  )
                   a.save()

  11. Formsetus irgi įmanoma dinamiškai pridedinėti su JS. http://stackoverflow.com/questions/501719/dynamically-adding-a-form-to-a-django-formset-with-ajax

     

     

     

    Nelabai net įsivaizduoju, ką reikėtų sugalvoti – POST yra paprasčiausias žodynas (dictionary), per kurį iteruoji, ieškodamas sau reikiamų argumentų ir kiekvienam kuri po naują įrašą. :)

     

    Beje, tavo view'e du tokie patys return, tą iš if gali šalinti – vis tiek bet kokiu atveju įsivykdys už jo einantis.

     

    Apie formsetus nieko nežinojau iki šiol. Dėkui už nuorodą, ji labai padėjo. Pavyko viską pasidaryti pasinaudojus šiuo instrumentu: http://code.google.com/p/django-dynamic-formset/.

    Dar iškilo klausimas. Kaip sužinoti, kokį unikalų id lentelėje Sablonai gaus įrašas, kad paskui aš jį galėčiau panaudoti įrašant savybes?

     

    def sablonai(request):
       if request.method == 'POST':
           sablonas_formset, savybes_formset = SablonasFormset(request.POST, prefix='sablonas_formset'), SavybesFormset(request.POST, prefix='savybes_formset')
           if sablonas_formset.is_valid() and savybes_formset.is_valid():
               sablonas_data = sablonas_formset.cleaned_data
               a = Sablonai(pavadinimas=sablonas_data[0]['sablono_pavadinimas'])
               a.save()
               savybes_data = savybes_formset.cleaned_data
               for form_data in savybes_data:
                   a = Sablono_savybes(savybes_pav=form_data['sablono_savybe'],
                                       sablonas = id? )
                   a.save()
               return render_to_response('rezultatas.html', {'sablonas_data': sablonas_data, 'savybes_data': savybes_data}, context_instance=RequestContext(request))
       else:
           sablonas_formset, savybes_formset = SablonasFormset(prefix='sablonas_formset'), SavybesFormset(prefix='savybes_formset')
       return render_to_response('sablonai.html', {'sablonas_formset': sablonas_formset, 'savybes_formset': savybes_formset},
           context_instance=RequestContext(request))
    

     

    Models.py

    class Sablonai(models.Model):
       pavadinimas = models.CharField(max_length=64)
    
    class Sablono_savybes(models.Model):
       sablonas = models.IntegerField(max_length=3)
       savybes_pav = models.CharField(max_length=32)
    

  12. Tiesa pasakius, tau patogiau butu naudoti pirma mano pateikta buda ir django admin interface.:)

    Dėkui už patarimą, bet django admin interface nenoriu naudoti dėl to, kad mano tikslas yra išmokti Python/Django. O padaręs savo adminą aš įgausiu patirties, nors gal ir prireiks daug prakaito išlieti. Sunku pratybose, lengva mūšyje. :)

     

    Dar noriu paklausti:

    Čia matau patarimus naudoti Django ORM ir ryšius tarp lentelių: ManyToManyField, ForeignKey.

    Iki šiol aš naudojau tik tiesiogines SQL užklausas ir šitų ryšių nenaudojau. Bet dabar atsiranda problemų su duomenų trynimu, pildymu. Pavyko išsiaiškinti, kad tai dėl MySQL varikliuko InnoDB. Tai supratau, kad man reikia arba keisti MySQL varikliuką, arba pereiti prie Django ORM. Kuris sprendimas geresnis?

  13. Dėkui už patarimus. Rusų forumuose aš radau kitokį sprendimo būdą ir pritaikiau jį sau. Įdomu būtų sužinoti daugiau išmanančių žmonių nuomonę, kas čia labiau tinka:

     

    function addInput2() {
       var id = document.getElementById("default-id").value;
       id++;
       $("#add_tb").append('<tr id="tr-' + id + '"><td><input type="text" name="savybe' + id + '" id="id_savybe' + id + '" size="30"><a href="javascript:{}" onclick="removeInput2(\'' + id + '\')">Pašalinti</a></td></tr>');
       document.getElementById("default-id").value = id;
    }
    
    function removeInput2(id) {
       $("#tr-"+id).remove();

     

     

    <div id="content">
           <div id="text">
               <h3> Šablono pavadinimas </h3>
               <form name="testform" action="/sablonai/" method="POST">{% csrf_token %}
                   <table id="add_tb">
                       <tr>
                           <td>
                               <input id="sablonas" type="text" size="30" value="" name="sablonas"/>
                           </td>
                       </tr>
                       <tr>
                           <td>
                               <h4>Savybės:</h4>
                               <input type="hidden" id="default-id" value="1">
                           </td>
                       </tr>
                       <tr id="tr-1">
                           <td>
                               <input type="text" name="savybe1" id="id_savybe1" size="30">
                           </td>
                       </tr>
                   </table>
                   <a href="javascript:{}" onclick="addInput2()">Dadėti savybių lauką</a><br>
                   <input type="submit" value="Patvirtinti">
               </form>
           </div>
       </div>

     

     

    def sablonai(request):    
       if request.method == 'POST':
           form = request.POST
           a = Sablonai(pavadinimas=form['sablonas'])
           a.save()
           return render_to_response('rezultatas.html', {'form': form}, context_instance=RequestContext(request))
    
       return render_to_response('sablonai.html', {'form': form}, context_instance=RequestContext(request))
    

    http://romka.eu/blog/dinamicheskoe-dobavlenie-elementov-k-forme

     

    p.s. Dar nesugalvojau, kaip išrankioti visus inputus iš POST ir juos surašyti į savybių DB.

  14. Sveiki,

    turiu tokią užduotį: yra daug daiktų ir kiekvienas iš jų turi savo savybių sąrašą. Reikia sukurti tokią dinaminę įvedimo formą, kurioje turėtų būti galimybė įvesti daikto pavadinimą ir visas jo savybes. Problema man iškilo tame, kad skiriasi kiekvieno daikto savybių sarašo ilgis ir forma negali būti stacionari. Taigi, ji turi turėti galimybę pridėti tiek input laukų, kiek reikia, bei paskui visa tai išsaugoti DB. Bandžiau nagrinėti klasę Form, bet nepavyksta rasti atsakymo. Gal čia kas nors padės surasti kelią. Iš anksto dėkui.

  15. Norėjau parekomenduoti dar vieną resursą Django mokymuisi, kuris man labai padėjo. Tiems, kuriems techninė literatūra geriau skaitosi rusų kalboj nei anglų:

    http://djbook.ru/

    Ir dar, interneto platybėse yra dvi knygos :

    Марк Лутц Изучаем Python, 3-е издание Ji ne apie Django, bet nežinant bent jau pagrindų, sunku mokytis Django. Iš savo dar nedidelės patirties galiu pasakyti, kad kol neperskaičiau šitos knygos, tai nelabai suprasdavau, kas tame Djange vyksta, ir dabar ji pastoviai atversta. Šitos knygos yra ir naujesnis leidimas, bet jame rašoma jau apie Python 3, kurio Django nepalaiko kol kas.

    Django Подробное руководство yra tas pats turinys kaip ir aukščiau nurodyto linko, tik kad sudėta į knygą.

     

    Čia literatūra tiems, kas galbūt nelabai moka angliškai.

    Šias knygas turiu elektroniniame variante ir, jei kam prireiks, rašykit - pasidalinsiu.

×
×
  • Pasirinkite naujai kuriamo turinio tipą...